[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 20/26] libvhost-user: Fix resource leak
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 20/26] libvhost-user: Fix resource leak |
Date: |
Thu, 8 Feb 2018 21:09:15 +0200 |
From: Yongji Xie <address@hidden>
Free the mmaped memory when we need to mmap new memory
space on vu_set_mem_table_exec() and vu_set_log_base_exec() to
avoid memory leak.
Also close the corresponding fd after mmap() on
vu_set_log_base_exec() to avoid fd leak.
Signed-off-by: Yongji Xie <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
---
contrib/libvhost-user/libvhost-user.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/contrib/libvhost-user/libvhost-user.c
b/contrib/libvhost-user/libvhost-user.c
index 27cc597..54dbc93 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -407,6 +407,15 @@ vu_set_mem_table_exec(VuDev *dev, VhostUserMsg *vmsg)
{
int i;
VhostUserMemory *memory = &vmsg->payload.memory;
+
+ for (i = 0; i < dev->nregions; i++) {
+ VuDevRegion *r = &dev->regions[i];
+ void *m = (void *) (uintptr_t) r->mmap_addr;
+
+ if (m) {
+ munmap(m, r->size + r->mmap_offset);
+ }
+ }
dev->nregions = memory->nregions;
DPRINT("Nregions: %d\n", memory->nregions);
@@ -472,9 +481,14 @@ vu_set_log_base_exec(VuDev *dev, VhostUserMsg *vmsg)
rc = mmap(0, log_mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd,
log_mmap_offset);
+ close(fd);
if (rc == MAP_FAILED) {
perror("log mmap error");
}
+
+ if (dev->log_table) {
+ munmap(dev->log_table, dev->log_size);
+ }
dev->log_table = rc;
dev->log_size = log_mmap_size;
--
MST
- [Qemu-devel] [PULL 09/26] vhost: Merge and delete unused callbacks, (continued)
- [Qemu-devel] [PULL 09/26] vhost: Merge and delete unused callbacks, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 10/26] vhost: Move log_dirty check, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 11/26] pci-bridge/i82801b11: clear bridge registers on platform reset, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 08/26] vhost: Clean out old vhost_set_memory and friends, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 13/26] virtio-blk: enable multiple vectors when using multiple I/O queues, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 12/26] pci/bus: let it has higher migration priority, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 17/26] cryptodev-vhost-user: add crypto session handler, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 16/26] cryptodev: add vhost support, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 15/26] cryptodev: add vhost-user as a new cryptodev backend, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 20/26] libvhost-user: Fix resource leak,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 21/26] libvhost-user: Support across-memory-boundary access, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 23/26] tests: acpi: fix FADT not being compared to reference table, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 22/26] hw/pci-bridge: fix pcie root port's IO hints capability, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 25/26] acpi-test: update FADT, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 19/26] virtio-balloon: unref the memory region before continuing, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 18/26] cryptodev-vhost-user: set the key length, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 24/26] lpc: drop pcie host dependency, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 14/26] pci: removed the is_express field since a uniform interface was inserted, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 26/26] virtio-balloon: include statistics of disk/file caches, Michael S. Tsirkin, 2018/02/08
- [Qemu-devel] [PULL 03/26] virtio: improve virtio devices initialization time, Michael S. Tsirkin, 2018/02/08