vhost-vdpa: make notifiers _init()/_uninit() symmetric
vhost_vdpa_host_notifiers_init() initializes queue notifiers
for queues "dev->vq_index" to queue "dev->vq_index + dev->nvqs",
whereas vhost_vdpa_host_notifiers_uninit() uninitializes the
same notifiers for queue "0" to queue "dev->nvqs".
This asymmetry seems buggy, fix that by using dev->vq_index
as the base for both.
Fixes: d0416d487b
("vhost-vdpa: map virtqueue notification area if possible")
Cc: jasowang@redhat.com
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-Id: <20220211161309.1385839-1-lvivier@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
98f7607ecd
commit
b1f030a0a2
@ -395,15 +395,6 @@ static void vhost_vdpa_host_notifier_uninit(struct vhost_dev *dev,
|
||||
}
|
||||
}
|
||||
|
||||
static void vhost_vdpa_host_notifiers_uninit(struct vhost_dev *dev, int n)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
vhost_vdpa_host_notifier_uninit(dev, i);
|
||||
}
|
||||
}
|
||||
|
||||
static int vhost_vdpa_host_notifier_init(struct vhost_dev *dev, int queue_index)
|
||||
{
|
||||
size_t page_size = qemu_real_host_page_size;
|
||||
@ -443,6 +434,15 @@ err:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void vhost_vdpa_host_notifiers_uninit(struct vhost_dev *dev, int n)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = dev->vq_index; i < dev->vq_index + n; i++) {
|
||||
vhost_vdpa_host_notifier_uninit(dev, i);
|
||||
}
|
||||
}
|
||||
|
||||
static void vhost_vdpa_host_notifiers_init(struct vhost_dev *dev)
|
||||
{
|
||||
int i;
|
||||
@ -456,7 +456,7 @@ static void vhost_vdpa_host_notifiers_init(struct vhost_dev *dev)
|
||||
return;
|
||||
|
||||
err:
|
||||
vhost_vdpa_host_notifiers_uninit(dev, i);
|
||||
vhost_vdpa_host_notifiers_uninit(dev, i - dev->vq_index);
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user