qemu/hw/core
Igor Mammedov 69382d8b3e qdev: Fix object reference leak in case device.realize() fails
If device doesn't have parent assined before its realize
is called, device_set_realized() will implicitly set parent
to '/machine/unattached'.

However device_set_realized() may fail after that point at
several other points leaving not realized object dangling
in '/machine/unattached' and as result caller of

  obj = object_new()
    obj->ref == 1
  object_property_set_bool(obj,..., true, "realized",...)
    obj->ref == 2
  if (fail)
      object_unref(obj);
      obj->ref == 1

will get object leak instead of expected object destruction.

Fix it by making device_set_realized() to cleanup after itself
in case of failure.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
2016-07-26 15:32:04 -03:00
..
bus.c qdev: Start disentangling bus from device 2016-05-26 14:06:41 +01:00
empty_slot.c hw/core: Clean up includes 2016-01-29 15:07:25 +00:00
fw-path-provider.c hw/core: Clean up includes 2016-01-29 15:07:25 +00:00
hotplug.c qdev: hotplug: Introduce HotplugHandler.pre_plug() callback 2016-06-17 16:33:48 +10:00
irq.c hw/core: Clean up includes 2016-01-29 15:07:25 +00:00
loader.c loader: fix potential memory leak 2016-05-18 15:04:26 +03:00
machine.c vl: Set errp to &error_abort on machine compat_props 2016-07-07 15:24:55 -03:00
Makefile.objs register: Add Register API 2016-07-04 13:15:22 +01:00
nmi.c nmi: remove x86 specific nmi handling 2016-05-23 16:53:46 +02:00
null-machine.c hw/core: Clean up includes 2016-01-29 15:07:25 +00:00
platform-bus.c hw/core: Clean up includes 2016-01-29 15:07:25 +00:00
ptimer.c Revert "hw/ptimer: Perform counter wrap around if timer already expired" 2016-07-14 16:51:36 +01:00
qdev-properties-system.c qapi: Change Netdev into a flat union 2016-07-19 20:18:02 +02:00
qdev-properties.c block/qdev: Allow configuring rerror/werror with qdev properties 2016-07-13 13:32:27 +02:00
qdev.c qdev: Fix object reference leak in case device.realize() fails 2016-07-26 15:32:04 -03:00
register.c register: Add block initialise helper 2016-07-04 13:15:22 +01:00
stream.c hw/core: Clean up includes 2016-01-29 15:07:25 +00:00
sysbus.c hw: remove pio_addr_t 2016-05-19 16:42:30 +02:00
uboot_image.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00