diff options
author | Alex Williamson <alex.williamson@redhat.com> | 2010-05-06 12:58:12 -0600 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2010-07-26 21:30:53 -0300 |
commit | d9cdcdb02c0ec9b564621f411395ca096645cd40 (patch) | |
tree | 1a1f5634c3d2180c8764f3bcd2dccbe83adb23c3 | |
parent | Merge branch 'stable-0.12' of git://git.sv.gnu.org/qemu into stable-0.12 (diff) | |
download | qemu-kvm-d9cdcdb02c0ec9b564621f411395ca096645cd40.tar.gz qemu-kvm-d9cdcdb02c0ec9b564621f411395ca096645cd40.tar.bz2 qemu-kvm-d9cdcdb02c0ec9b564621f411395ca096645cd40.zip |
Fix segfault after device assignment hot remove
We keep a qlist of assigned devices for irq updates, but we forgot to
remove entries from it if they're hot unplugged. This makes
assigned_dev_update_irqs() a timebomb that goes off when the guest is
rebooted.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r-- | hw/device-assignment.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/device-assignment.c b/hw/device-assignment.c index 801950eaf..6cc0e7aa9 100644 --- a/hw/device-assignment.c +++ b/hw/device-assignment.c @@ -1195,6 +1195,7 @@ static int assigned_exitfn(struct PCIDevice *pci_dev) { AssignedDevice *dev = DO_UPCAST(AssignedDevice, dev, pci_dev); + QLIST_REMOVE(dev, next); deassign_device(dev); free_assigned_device(dev); return 0; |