qemu/hw/virtio
Alex Williamson ee4c112846 vhost: Release memory references on cleanup
vhost registers a MemoryListener where it adds and removes references
to MemoryRegions as the MemoryRegionSections pass through.  The
region_add callback is invoked for each existing section when the
MemoryListener is registered, but unregistering the MemoryListener
performs no reciprocal region_del callback.  It's therefore the
owner of the MemoryListener's responsibility to cleanup any persistent
changes, such as these memory references, after unregistering.

The consequence of this bug is that if we have both a vhost device
and a vfio device, the vhost device will reference any mmap'd MMIO of
the vfio device via this MemoryListener.  If the vhost device is then
removed, those references remain outstanding.  If we then attempt to
remove the vfio device, it never gets finalized and the only way to
release the kernel file descriptors is to terminate the QEMU process.

Fixes: dfde4e6e1a ("memory: add ref/unref calls")
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-stable@nongnu.org # v1.6.0+
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2017-09-08 16:15:17 +03:00
..
Makefile.objs stubs: move vhost stubs to stubs/vhost.o 2017-01-16 17:52:35 +01:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
vhost-backend.c vhost: fix a memory leak 2017-08-02 00:13:25 +03:00
vhost-stub.c stubs: move vhost stubs to stubs/vhost.o 2017-01-16 17:52:35 +01:00
vhost-user.c vhost-user: fix legacy cross-endian configurations 2017-08-02 00:13:25 +03:00
vhost-vsock.c migration: migration.h was not needed 2017-05-18 19:20:59 +02:00
vhost.c vhost: Release memory references on cleanup 2017-09-08 16:15:17 +03:00
virtio-balloon.c balloon: Don't balloon roms 2017-01-10 07:02:52 +02:00
virtio-bus.c virtio: Fix error handling in virtio_bus_device_plugged 2017-03-22 17:54:32 +02:00
virtio-crypto-pci.c virtio-crypto: Convert to DEFINE_PROP_LINK 2017-07-14 12:04:43 +02:00
virtio-crypto.c virtio-crypto: Convert to DEFINE_PROP_LINK 2017-07-14 12:04:43 +02:00
virtio-mmio.c virtio-mmio: switch to linux headers 2017-01-18 22:59:53 +02:00
virtio-pci.c build-sys: add --disable-vhost-user 2017-08-03 15:55:41 +03:00
virtio-pci.h vhost-user-scsi: Introduce vhost-user-scsi host device 2017-06-15 11:18:40 +02:00
virtio-rng.c virtio-rng: Convert to DEFINE_PROP_LINK 2017-07-14 12:04:42 +02:00
virtio.c virtio: add virtqueue_alloc_element tracepoint 2017-06-02 18:57:17 +03:00