[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/32] vhost-user-fs: do delete virtio_queues in unrealize
From: |
Michael S. Tsirkin |
Subject: |
[PULL 05/32] vhost-user-fs: do delete virtio_queues in unrealize |
Date: |
Tue, 25 Feb 2020 10:12:48 -0500 |
From: Pan Nengyuan <address@hidden>
Similar to other virtio device(https://patchwork.kernel.org/patch/11399237/),
virtio queues forgot to delete in unrealize, and aslo error path in realize,
this patch fix these memleaks, the leak stack is as follow:
Direct leak of 57344 byte(s) in 1 object(s) allocated from:
#0 0x7f15784fb970 in __interceptor_calloc (/lib64/libasan.so.5+0xef970)
#1 0x7f157790849d in g_malloc0 (/lib64/libglib-2.0.so.0+0x5249d)
#2 0x55587a1bf859 in virtio_add_queue
/mnt/sdb/qemu-new/qemu_test/qemu/hw/virtio/virtio.c:2333
#3 0x55587a2071d5 in vuf_device_realize
/mnt/sdb/qemu-new/qemu_test/qemu/hw/virtio/vhost-user-fs.c:212
#4 0x55587a1ae360 in virtio_device_realize
/mnt/sdb/qemu-new/qemu_test/qemu/hw/virtio/virtio.c:3531
#5 0x55587a63fb7b in device_set_realized
/mnt/sdb/qemu-new/qemu_test/qemu/hw/core/qdev.c:891
#6 0x55587acf03f5 in property_set_bool
/mnt/sdb/qemu-new/qemu_test/qemu/qom/object.c:2238
#7 0x55587acfce0d in object_property_set_qobject
/mnt/sdb/qemu-new/qemu_test/qemu/qom/qom-qobject.c:26
#8 0x55587acf5c8c in object_property_set_bool
/mnt/sdb/qemu-new/qemu_test/qemu/qom/object.c:1390
#9 0x55587a8e22a2 in pci_qdev_realize
/mnt/sdb/qemu-new/qemu_test/qemu/hw/pci/pci.c:2095
#10 0x55587a63fb7b in device_set_realized
/mnt/sdb/qemu-new/qemu_test/qemu/hw/core/qdev.c:891
#11 0x55587acf03f5 in property_set_bool
/mnt/sdb/qemu-new/qemu_test/qemu/qom/object.c:2238
#12 0x55587acfce0d in object_property_set_qobject
/mnt/sdb/qemu-new/qemu_test/qemu/qom/qom-qobject.c:26
#13 0x55587acf5c8c in object_property_set_bool
/mnt/sdb/qemu-new/qemu_test/qemu/qom/object.c:1390
#14 0x55587a496d65 in qdev_device_add
/mnt/sdb/qemu-new/qemu_test/qemu/qdev-monitor.c:679
Reported-by: Euler Robot <address@hidden>
Signed-off-by: Pan Nengyuan <address@hidden>
Cc: "Dr. David Alan Gilbert" <address@hidden>
Cc: Stefan Hajnoczi <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/virtio/vhost-user-fs.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c
index 33b17848c2..4554d123b7 100644
--- a/hw/virtio/vhost-user-fs.c
+++ b/hw/virtio/vhost-user-fs.c
@@ -230,6 +230,10 @@ static void vuf_device_realize(DeviceState *dev, Error
**errp)
err_virtio:
vhost_user_cleanup(&fs->vhost_user);
+ virtio_del_queue(vdev, 0);
+ for (i = 0; i < fs->conf.num_request_queues; i++) {
+ virtio_del_queue(vdev, i + 1);
+ }
virtio_cleanup(vdev);
g_free(fs->vhost_dev.vqs);
return;
@@ -239,6 +243,7 @@ static void vuf_device_unrealize(DeviceState *dev, Error
**errp)
{
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
VHostUserFS *fs = VHOST_USER_FS(dev);
+ int i;
/* This will stop vhost backend if appropriate. */
vuf_set_status(vdev, 0);
@@ -247,6 +252,10 @@ static void vuf_device_unrealize(DeviceState *dev, Error
**errp)
vhost_user_cleanup(&fs->vhost_user);
+ virtio_del_queue(vdev, 0);
+ for (i = 0; i < fs->conf.num_request_queues; i++) {
+ virtio_del_queue(vdev, i + 1);
+ }
virtio_cleanup(vdev);
g_free(fs->vhost_dev.vqs);
fs->vhost_dev.vqs = NULL;
--
MST
- [PULL 00/32] virtio, pc: fixes, features, Michael S. Tsirkin, 2020/02/25
- [PULL 01/32] bios-tables-test: tell people how to update, Michael S. Tsirkin, 2020/02/25
- [PULL 02/32] bios-tables-test: fix up DIFF generation, Michael S. Tsirkin, 2020/02/25
- [PULL 03/32] bios-tables-test: default diff command, Michael S. Tsirkin, 2020/02/25
- [PULL 04/32] rebuild-expected-aml.sh: remind about the process, Michael S. Tsirkin, 2020/02/25
- [PULL 05/32] vhost-user-fs: do delete virtio_queues in unrealize,
Michael S. Tsirkin <=
- [PULL 06/32] vhost-user-fs: convert to the new virtio_delete_queue function, Michael S. Tsirkin, 2020/02/25
- [PULL 07/32] virtio-pmem: do delete rq_vq in virtio_pmem_unrealize, Michael S. Tsirkin, 2020/02/25
- [PULL 08/32] virtio-crypto: do delete ctrl_vq in virtio_crypto_device_unrealize, Michael S. Tsirkin, 2020/02/25
- [PULL 09/32] vhost-user-blk: delete virtioqueues in unrealize to fix memleaks, Michael S. Tsirkin, 2020/02/25
- [PULL 10/32] vhost-user-blk: convert to new virtio_delete_queue, Michael S. Tsirkin, 2020/02/25
- [PULL 11/32] virtio: gracefully handle invalid region caches, Michael S. Tsirkin, 2020/02/25
- [PULL 13/32] virtio-iommu: Decode the command payload, Michael S. Tsirkin, 2020/02/25
- [PULL 12/32] virtio-iommu: Add skeleton, Michael S. Tsirkin, 2020/02/25
- [PULL 15/32] virtio-iommu: Implement map/unmap, Michael S. Tsirkin, 2020/02/25
- [PULL 16/32] virtio-iommu: Implement translate, Michael S. Tsirkin, 2020/02/25