Fix hot remove assigned device regression
commit7f74208e34ad5637f0dbafa15108f77e95a78eee
authorHan, Weidong <weidong.han@intel.com>
Wed, 10 Jun 2009 07:45:37 +0000 (10 15:45 +0800)
committerAvi Kivity <avi@redhat.com>
Wed, 10 Jun 2009 08:41:40 +0000 (10 11:41 +0300)
treef7f7cc0133a5a81150dd296b85ab39d987566004
parent1561929db2a27fc74f461f2bf4347a90e37426e7
Fix hot remove assigned device regression

When hot remove an assigned device, segmentation fault was triggered
by qdev_free(&pci_dev->qdev) in pci_unregister_device().
pci_register_device() doesn't initialize or set pci_dev->qdev. For an
assigned device, qdev variable isn't touched at all. So segmentation
fault happens when to free a non-initialized qdev.

This patch adds a parameter in pci_unregister_device to check if
it's an assigned device. For assgined device, free pci_dev instead of
qdev. No changes for other devices.

Signed-off-by: Weidong Han <weidong.han@intel.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
hw/device-assignment.c
hw/pci-hotplug.c
hw/pci.c
hw/pci.h