summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Williamson <alex.williamson@redhat.com>2010-05-06 12:58:12 -0600
committerMarcelo Tosatti <mtosatti@redhat.com>2010-07-26 21:30:53 -0300
commitd9cdcdb02c0ec9b564621f411395ca096645cd40 (patch)
tree1a1f5634c3d2180c8764f3bcd2dccbe83adb23c3
parentMerge branch 'stable-0.12' of git://git.sv.gnu.org/qemu into stable-0.12 (diff)
downloadqemu-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.c1
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;