qemu/hw/core
Peter Maydell 7474f1be70 qdev_try_create(): Assert that devices we put onto the system bus are SysBusDevices
If qdev_try_create() is passed NULL for the bus, it will automatically
put the newly created device onto the default system bus. However
if the device is not actually a SysBusDevice then this will result
in later crashes (for instance when running the monitor "info qtree"
command) because code reasonably assumes that all devices on the system
bus are system bus devices.

Generally the mistake is that the calling code should create the
object with object_new(TYPE_FOO) rather than qdev_create(NULL, TYPE_FOO);
see commit 6749695eaa for an example of fixing this bug.

Assert in qdev_try_create() if the device isn't suitable to put on
the system bus, so that this mistake results in failure earlier
and more reliably.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
2016-06-14 15:07:43 +01: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 hw/core: Clean up includes 2016-01-29 15:07:25 +00: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 machine: add properties to compat_props incrementaly 2016-05-20 14:28:54 -03:00
Makefile.objs qdev: Start disentangling bus from device 2016-05-26 14:06:41 +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 hw/ptimer: Introduce ptimer_get_limit 2016-06-06 16:59:31 +01:00
qdev-properties-system.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
qdev-properties.c * Log filtering from Alex and Peter 2016-03-24 21:42:40 +00:00
qdev.c qdev_try_create(): Assert that devices we put onto the system bus are SysBusDevices 2016-06-14 15:07:43 +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 hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00