| Submitter | Michael S. Tsirkin |
|---|---|
| Date | July 16, 2010, 2:11 p.m. |
| Message ID | <20100716141146.GA4325@redhat.com> |
| Download | mbox | patch |
| Permalink | /patch/59108/ |
| State | New |
| Headers | show |
Comments
On 07/16/10 16:11, Michael S. Tsirkin wrote: > 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<mst@redhat.com> Fixes the bug for me. Tested-by: Gerd Hoffmann <kraxel@redhat.com> cheers, Gerd
Patch
diff --git a/hw/vhost.c b/hw/vhost.c index d37a66e..25cb9f5 100644 --- a/hw/vhost.c +++ b/hw/vhost.c @@ -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;
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 <mst@redhat.com> ---