On 17/07/19 02:46, elohi...@gmail.com wrote: > From: Xie Yongji <xieyon...@baidu.com> > > This avoids memory leak when device hotplug is failed. > > Signed-off-by: Xie Yongji <xieyon...@baidu.com> > --- > hw/scsi/vhost-user-scsi.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c > index a9fd8ea305..17826ef8e2 100644 > --- a/hw/scsi/vhost-user-scsi.c > +++ b/hw/scsi/vhost-user-scsi.c > @@ -87,7 +87,7 @@ static void vhost_user_scsi_realize(DeviceState *dev, Error > **errp) > } > > if (!vhost_user_init(&s->vhost_user, &vs->conf.chardev, errp)) { > - return; > + goto free_virtio; > } > > vsc->dev.nvqs = 2 + vs->conf.num_queues; > @@ -101,15 +101,23 @@ static void vhost_user_scsi_realize(DeviceState *dev, > Error **errp) > if (ret < 0) { > error_setg(errp, "vhost-user-scsi: vhost initialization failed: %s", > strerror(-ret)); > - vhost_user_cleanup(&s->vhost_user); > - g_free(vqs); > - return; > + goto free_vhost; > } > > /* Channel and lun both are 0 for bootable vhost-user-scsi disk */ > vsc->channel = 0; > vsc->lun = 0; > vsc->target = vs->conf.boot_tpgt; > + > + return; > + > +free_vhost: > + vhost_user_cleanup(&s->vhost_user); > + g_free(vqs); > +free_virtio: > + err = NULL; > + virtio_scsi_common_unrealize(dev, &err); > + error_propagate(errp, err); > } > > static void vhost_user_scsi_unrealize(DeviceState *dev, Error **errp) >
Queued both patches, thanks. Paolo