aboutsummaryrefslogtreecommitdiff
path: root/hw/qdev.c
diff options
context:
space:
mode:
authorAnthony Liguori <aliguori@us.ibm.com>2010-06-14 10:33:36 -0500
committerAnthony Liguori <aliguori@us.ibm.com>2010-06-14 10:33:36 -0500
commita4673e276248ada38f40d39191a197e7e35d3f8b (patch)
tree4ecdac95fb7bb86eefc08ee38ca229c4d89e02e0 /hw/qdev.c
parenta2da0395c12bd2b26e2180d735c83988ff66a559 (diff)
parent653dbec7c97cb51d19636423902719e5850da265 (diff)
Merge remote branch 'kwolf/for-anthony' into staging
Conflicts: hw/pc.c
Diffstat (limited to 'hw/qdev.c')
-rw-r--r--hw/qdev.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/hw/qdev.c b/hw/qdev.c
index 36f29ea79f..61f999c023 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -334,6 +334,7 @@ void qdev_init_nofail(DeviceState *dev)
void qdev_free(DeviceState *dev)
{
BusState *bus;
+ Property *prop;
if (dev->state == DEV_STATE_INITIALIZED) {
while (dev->num_child_bus) {
@@ -349,6 +350,11 @@ void qdev_free(DeviceState *dev)
}
qemu_unregister_reset(qdev_reset, dev);
QLIST_REMOVE(dev, sibling);
+ for (prop = dev->info->props; prop && prop->name; prop++) {
+ if (prop->info->free) {
+ prop->info->free(dev, prop);
+ }
+ }
qemu_free(dev);
}