vhost: make vhost_dev_cleanup() idempotent
It is called on multiple code path, so make it safe to call several times (note: I don't remember a reproducer here, but a function called 'cleanup' should probably be idempotent in my book) Signed-off-by: Marc-André Lureau <marcandre.lureau@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
5be5f9be72
commit
e0547b59dc
@ -1123,6 +1123,7 @@ fail:
|
|||||||
void vhost_dev_cleanup(struct vhost_dev *hdev)
|
void vhost_dev_cleanup(struct vhost_dev *hdev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < hdev->nvqs; ++i) {
|
for (i = 0; i < hdev->nvqs; ++i) {
|
||||||
vhost_virtqueue_cleanup(hdev->vqs + i);
|
vhost_virtqueue_cleanup(hdev->vqs + i);
|
||||||
}
|
}
|
||||||
@ -1137,8 +1138,12 @@ void vhost_dev_cleanup(struct vhost_dev *hdev)
|
|||||||
}
|
}
|
||||||
g_free(hdev->mem);
|
g_free(hdev->mem);
|
||||||
g_free(hdev->mem_sections);
|
g_free(hdev->mem_sections);
|
||||||
hdev->vhost_ops->vhost_backend_cleanup(hdev);
|
if (hdev->vhost_ops) {
|
||||||
|
hdev->vhost_ops->vhost_backend_cleanup(hdev);
|
||||||
|
}
|
||||||
assert(!hdev->log);
|
assert(!hdev->log);
|
||||||
|
|
||||||
|
memset(hdev, 0, sizeof(struct vhost_dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stop processing guest IO notifications in qemu.
|
/* Stop processing guest IO notifications in qemu.
|
||||||
|
Loading…
Reference in New Issue
Block a user