qemu/include
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
..
block block: Add error handling to bdrv_invalidate_cache() 2014-03-19 09:39:41 +01:00
disas disas: Implement disassembly output for A64 2014-02-08 14:50:48 +00:00
exec exec-all.h: Increase MAX_OP_PER_INSTR for ARM A64 decoder 2014-03-17 16:31:51 +00:00
fpu softfloat: export squash_input_denormal functions 2014-03-17 16:31:51 +00:00
hw vl.c: Fix OpenBSD compilation issue due to namespace collisions 2014-03-19 21:00:34 +01:00
migration scsi: Fix migration of scsi sense data 2014-03-14 10:06:55 +01:00
monitor quorum: Add quorum mechanism. 2014-02-21 22:29:50 +01:00
net net: remove implicit peer from offload API 2014-02-25 14:31:05 +01:00
qapi qapi script: do not add "_" for every capitalized char in enum 2014-03-11 09:07:42 -04:00
qemu Block pull request 2014-03-13 15:33:04 +00:00
qom qom: Make QOM link property unref optional 2014-03-19 22:05:20 +01:00
sysemu Fix vga_interface_type for command line argument '-device VGA' 2014-03-13 20:53:19 +01:00
ui gtk: Allow to activate grab-on-hover from the command line 2014-03-17 14:33:55 +01:00
config.h janitor: move remaining public headers to include/ 2012-12-19 08:32:46 +01:00
elf.h tcg-s390: Use qemu_getauxval in query_facilities 2013-11-30 07:45:30 +13:00
glib-compat.h glib: add a compatibility interface for g_timeout_add_seconds 2013-03-25 13:10:40 -05:00
qemu-common.h Block patches 2014-02-25 10:50:11 +00:00
qemu-io.h qemu-io: Fix warnings from static code analysis 2014-03-13 14:42:24 +01:00
trace.h build: some simplifications for "trace/Makefile.objs" 2013-01-12 18:42:51 +01:00