From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39618) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yb7lB-00016g-0Z for qemu-devel@nongnu.org; Thu, 26 Mar 2015 09:23:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yb7l7-0007kI-Q6 for qemu-devel@nongnu.org; Thu, 26 Mar 2015 09:23:44 -0400 Received: from mail-wi0-x22e.google.com ([2a00:1450:400c:c05::22e]:35193) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yb7l7-0007k3-Ir for qemu-devel@nongnu.org; Thu, 26 Mar 2015 09:23:41 -0400 Received: by wibbg6 with SMTP id bg6so64097229wib.0 for ; Thu, 26 Mar 2015 06:23:41 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <55140859.4080507@redhat.com> Date: Thu, 26 Mar 2015 14:23:37 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1427355752-25844-1-git-send-email-kathy.wangting@huawei.com> In-Reply-To: <1427355752-25844-1-git-send-email-kathy.wangting@huawei.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] virtio-scsi-dataplane: fix memory leak for VirtIOSCSIVring List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Ting Wang , qemu-devel@nongnu.org On 26/03/2015 08:42, Ting Wang wrote: > VirtIOSCSIVring which allocated in virtio_scsi_vring_init > should be free when dataplane has been stopped or failed to start. > > Signed-off-by: Ting Wang > --- > hw/scsi/virtio-scsi-dataplane.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c > index c069cd7..5575648 100644 > --- a/hw/scsi/virtio-scsi-dataplane.c > +++ b/hw/scsi/virtio-scsi-dataplane.c > @@ -182,13 +182,19 @@ static void virtio_scsi_vring_teardown(VirtIOSCSI *s) > > if (s->ctrl_vring) { > vring_teardown(&s->ctrl_vring->vring, vdev, 0); > + g_slice_free(VirtIOSCSIVring, s->ctrl_vring); > + s->ctrl_vring = NULL; > } > if (s->event_vring) { > vring_teardown(&s->event_vring->vring, vdev, 1); > + g_slice_free(VirtIOSCSIVring, s->event_vring); > + s->event_vring = NULL; > } > if (s->cmd_vrings) { > for (i = 0; i < vs->conf.num_queues && s->cmd_vrings[i]; i++) { > vring_teardown(&s->cmd_vrings[i]->vring, vdev, 2 + i); > + g_slice_free(VirtIOSCSIVring, s->cmd_vrings[i]); > + s->cmd_vrings[i] = NULL; > } > free(s->cmd_vrings); > s->cmd_vrings = NULL; > Applied for 2.3.0-rc2, thanks. Paolo