vhost: fix miration during device start
PATCH 1/1 vhost: fix miration during device start
We need to know ring layout to allocate log buffer. So init rings first.
Also fixes a theoretical memory-leak-on-error.
https://bugzilla.redhat.com/show_bug.cgi?id=615228
Signed-off-by Michael S. Tsirkin <[email protected]>
---
hw/vhost.c +10 -9
@@ -659,6 +659,16 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev) r = -errno; goto fail; } +for (i =0 ; i < hdev->nvqs; ++i) { + r =vhost_virtqueue_init (hdev, + vdev, + hdev->vqs + i, + i); +if (r <0 ) { + goto fail_vq; + } + } +if (hdev->log_enabled) { hdev->log_size =vhost_get_log_size (hdev); hdev->log = hdev->log_size ?
@@ -671,15 +681,6 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev) } } -for (i =0 ; i < hdev->nvqs; ++i) { - r =vhost_virtqueue_init (hdev, - vdev, - hdev->vqs + i, - i); -if (r <0 ) { - goto fail_vq; - } - } hdev->started = true;return 0 ;
Quoted 8 lines · Michael S. Tsirkin
We need to know ring layout to allocate log buffer. So init rings first.
Also fixes a theoretical memory-leak-on-error.
https://bugzilla.redhat.com/show_bug.cgi?id=615228
Signed-off-by Michael S. Tsirkin<[email protected]>
Fixes the bug for me.
Tested-by Gerd Hoffmann <[email protected]>
cheers,
Gerd