qemu/hw/virtio
Paolo Bonzini 8b81bb3b06 virtio-pci: fix MSI memory region use after free
After memory region QOMification QEMU is stricter in detecting
wrong usage of the memory region API.  Here it detected a
memory_region_destroy done before the corresponding
memory_region_del_subregion; the memory_region_destroy is
done by msix_uninit_exclusive_bar, the memory_region_del_subregion
is done by the PCI core's pci_unregister_io_regions before
pc->exit is called.

The problem was introduced by
commit 06a1307379
    virtio-pci: add device_unplugged callback
As noted in that commit log, virtio device kick callbacks need to be
stopped before generic virtio is cleaned up. This is because these are
notifications from pci proxy to the generic virtio device so they need
to be stopped in the unplug call before the virtio device is unrealized.
However interrupts are notifications from the virtio device to
the pci proxy so they need to stay around while the device
is realized.

The memory API misuse caused an assertion when hot-unplugging virtio
devices.  Using the API correctly fixes the assertion.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2014-07-06 09:13:54 +03:00
..
dataplane dataplane: fix shadowed return value 2014-01-22 13:48:18 +01:00
Makefile.objs Add vhost-user as a vhost backend. 2014-06-19 16:41:56 +03:00
vhost-backend.c Add vhost-user as a vhost backend. 2014-06-19 16:41:56 +03:00
vhost-user.c vhost-user: fix regions provied with VHOST_USER_SET_MEM_TABLE message 2014-06-29 19:39:40 +03:00
vhost.c vhost: fix resource leak in error handling 2014-06-23 17:37:59 +03:00
virtio-balloon.c virtio-balloon: use virtio wrappers to access page frame numbers 2014-06-29 19:39:42 +03:00
virtio-bus.c virtio-bus: cleanup plug/unplug interface 2013-12-09 21:46:48 +01:00
virtio-mmio.c hw/virtio: enable common virtio feature for mmio device 2014-07-06 09:13:54 +03:00
virtio-pci.c virtio-pci: fix MSI memory region use after free 2014-07-06 09:13:54 +03:00
virtio-pci.h virtio-blk: use aliases instead of duplicate qdev properties 2014-07-01 09:15:02 +02:00
virtio-rng.c virtio-rng: implement per-device migration calls 2014-06-29 19:39:41 +03:00
virtio.c virtio: allow byte swapping for vring 2014-06-29 19:39:42 +03:00