qemu/hw
Stefan Hajnoczi 9561fda8d9 qom: Make QOM link property unref optional
Some object_property_add_link() callers expect property deletion to
unref the link property object.  Other callers expect to manage the
refcount themselves.  The former are currently broken and therefore leak
the link property object.

This patch adds a flags argument to object_property_add_link() so the
caller can specify which refcount behavior they require.  The new
OBJ_PROP_LINK_UNREF_ON_RELEASE flag causes the link pointer to be
unreferenced when the property is deleted.

This fixes refcount leaks in qdev.c, xilinx_axidma.c, xilinx_axienet.c,
s390-virtio-bus.c, virtio-pci.c, virtio-rng.c, and ui/console.c.

Rationale for refcount behavior:

 * hw/core/qdev.c
   - bus children are explicitly unreferenced, don't interfere
   - parent_bus is essentially a read-only property that doesn't hold a
     refcount, don't unref
   - hotplug_handler is leaked, do unref

 * hw/dma/xilinx_axidma.c
   - rx stream "dma" links are set using set_link, therefore they
     need unref
   - tx streams are set using set_link, therefore they need unref

 * hw/net/xilinx_axienet.c
   - same reasoning as hw/dma/xilinx_axidma.c

 * hw/pcmcia/pxa2xx.c
   - pxa2xx bypasses set_link and therefore does not use refcounts

 * hw/s390x/s390-virtio-bus.c
 * hw/virtio/virtio-pci.c
 * hw/virtio/virtio-rng.c
 * ui/console.c
   - set_link is used and there is no explicit unref, do unref

Cc: Peter Crosthwaite <peter.crosthwaite@petalogix.com>
Cc: Alexander Graf <agraf@suse.de>
Cc: Anthony Liguori <aliguori@amazon.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
2014-03-19 22:05:20 +01:00
..
9pfs hw/9pfs: use g_strdup_printf() instead of PATH_MAX limitation 2014-03-04 00:57:57 +05:30
acpi QOM infrastructure fixes and device conversions 2014-02-20 13:05:48 +00:00
alpha exec: Make stq_*_phys input an AddressSpace 2014-02-11 22:57:12 +10:00
arm virt: Set reset-cbar on CPUs 2014-03-17 16:31:46 +00:00
audio audio: Add 'static' attributes to several variables 2014-03-15 13:54:18 +04:00
block dataplane: fix implicit IOThread refcount 2014-03-19 09:45:25 +01:00
bt Preparation for usb-bt-dongle conditional build 2013-09-10 11:14:41 +02:00
char pl011: fix incorrect logic to set the RXFF flag 2014-03-18 19:38:56 +00:00
core qom: Make QOM link property unref optional 2014-03-19 22:05:20 +01:00
cpu icc_bus: QOM'ify ICC 2013-12-24 18:02:18 +01:00
cris cris: Remove the CRIS PIC glue 2014-02-03 14:04:00 +00:00
display ui/vnc: fix vmware VGA incompatiblities 2014-03-18 08:21:24 +01:00
dma qom: Make QOM link property unref optional 2014-03-19 22:05:20 +01:00
gpio max7310: QOM'ify 2014-02-14 16:22:32 +01:00
i2c i2c: Rename i2c_bus to I2CBus 2014-02-14 16:22:31 +01:00
i386 cpu-exec: Change cpu_resume_from_signal() argument to CPUState 2014-03-13 19:20:48 +01:00
ide ahci: fix sysbus support 2014-03-18 19:36:13 +00:00
input pckbd: return 'keyboard enabled' on read input port command 2014-03-09 21:09:38 +02:00
intc misc: Fix typos in comments 2014-03-15 13:54:18 +04:00
ipack ipack: Move IndustryPack out of hw/char/ 2014-02-14 21:11:53 +01:00
isa QOM infrastructure fixes and device conversions 2014-02-20 13:05:48 +00:00
lm32 hw/lm32: print error if cpu model is not found 2014-02-04 19:47:39 +01:00
m68k an5206: Don't enforce use of kernel for qtest 2013-11-05 17:47:29 +01:00
microblaze xilinx: Delete hw/include/xilinx.h 2014-02-26 14:54:45 +10:00
mips i2c: Rename i2c_bus to I2CBus 2014-02-14 16:22:31 +01:00
misc misc/max111x: QOM casting sweep 2014-03-12 20:13:02 +01:00
moxie moxie: fix load_elf() usage 2014-03-05 03:06:46 +01:00
net qom: Make QOM link property unref optional 2014-03-19 22:05:20 +01:00
nvram qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
openrisc openrisc-timer: Reduce overhead, Separate clock update functions 2013-11-20 21:46:45 +08:00
pci pci: Move VMState registration/unregistration to QOM realize/unrealize 2014-03-13 01:21:57 +01:00
pci-bridge pci/shpc: convert SHPC hotplug to use hotplug-handler API 2014-02-10 10:27:00 +02:00
pci-host raven: Move BIOS loading from board code to PCI host 2014-03-13 20:15:37 +01:00
pcmcia qom: Make QOM link property unref optional 2014-03-19 22:05:20 +01:00
ppc PowerPC queue for 2.0 2014-03-13 21:27:54 +00:00
s390x qom: Make QOM link property unref optional 2014-03-19 22:05:20 +01:00
scsi virtio-scsi: actually honor sense_size from configuration space 2014-03-14 13:38:03 +01:00
sd ssi: Convert legacy SSI_SLAVE -> DEVICE casts 2014-03-12 20:13:02 +01:00
sh4 cputlb: Change tlb_flush() argument to CPUState 2014-03-13 19:52:47 +01:00
sparc sun4m: Add Sun CG3 framebuffer initialisation function 2014-02-27 10:01:41 +00:00
sparc64 pc,pci,virtio fixes and cleanups 2013-09-03 12:31:07 -05:00
ssi ssi: Convert legacy SSI_BUS -> BUS casts 2014-03-12 20:13:02 +01:00
timer hw/timer/grlib_gptimer: Avoid integer overflows 2014-03-15 13:54:18 +04:00
tpm aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
unicore32 console: add head to index to qemu consoles. 2014-03-05 09:52:04 +01:00
usb Add a 'name' parameter to qemu_thread_create 2014-03-09 21:09:38 +02:00
virtio qom: Make QOM link property unref optional 2014-03-19 22:05:20 +01:00
watchdog qemu-option: Remove qemu_opts_create_nofail 2014-01-06 15:02:30 -05:00
xen Call pci_piix3_xen_ide_unplug from unplug_disks 2014-02-20 17:28:08 +00:00
xtensa hw/xtensa: add support for ML605 and KC705 FPGA board 2014-02-24 04:47:01 +04:00
Makefile.objs hw/9pfs: Include virtio-9p-device.o in build 2014-03-04 09:20:49 +05:30