qemu-patch-raspberry4/hw
Paolo Bonzini 2264750483 scsi: give device a parent before setting properties
This mimics what is done in qdev_device_add, and lets the device be
freed in case something goes wrong.  Otherwise, object_unparent returns
immediately without freeing the device, which is on the other hand left
in the parent bus's list of children.

scsi_bus_legacy_handle_cmdline then returns an error, and the HBA is
destroyed as well with object_unparent.  But the lingering device that
was not removed in scsi_bus_legacy_add_drive cannot be removed now either,
and bus_unparent gets stuck in an infinite loop trying to empty the list
of children.

The right fix of course would be to assert in bus_add_child that the
device already has a bus, and remove the "safety net" that adds the
drive to the QOM tree in device_set_realized.  I am not yet sure whether
that would entail changing all callers to qdev_create (as well as
isa_create and usb_create and the corresponding _try_create versions).

Reported-by: Markus Armbruster <armbru@redhat.com>
Tested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-02-27 14:43:44 +01:00
..
9pfs rcu: introduce RCU-enabled QLIST 2015-02-16 17:30:19 +01:00
acpi pci, pc, virtio fixes and cleanups 2015-01-27 13:17:30 +00:00
alpha isa: add memory space parameter to isa_bus_new 2015-02-13 14:09:27 +00:00
arm error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
audio sb16: fix interrupt acknowledgement 2015-01-22 11:04:18 +01:00
block Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
bt l2cap: fix access to freed memory 2014-08-15 19:12:48 +04:00
char error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
core hmp: Normalize HMP command handler names 2015-02-25 13:14:37 +00:00
cpu icc_bus: fix typo ICC_BRIGDE -> ICC_BRIDGE 2014-11-03 19:51:56 +03:00
cris hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
display isa: remove isa_mem_base variable 2015-02-13 14:09:28 +00:00
dma vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
gpio PPC: Add MPC8XXX gpio controller 2014-11-04 23:26:12 +01:00
i2c Fix debug print warning 2014-09-02 22:38:16 +04:00
i386 Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
ide error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
input Add trace to ps2.c. 2015-02-10 09:27:20 +03:00
intc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
ipack memory: remove memory_region_destroy 2014-08-18 12:06:21 +02:00
isa isa: remove isa_mem_base variable 2015-02-13 14:09:28 +00:00
lm32 acpi-build: make ROMs RAM blocks resizeable 2015-01-08 13:17:55 +02:00
m68k hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mem pc-dimm: Add Error argument to pc_existing_dimms_capacity 2015-01-27 14:46:18 +02:00
microblaze hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mips gt64xxx: remove isa_mem_base usage 2015-02-13 14:09:27 +00:00
misc hw: misc, add educational driver 2015-01-26 12:26:55 +01:00
moxie memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
net rtl8139: g_malloc() can't fail, bury dead error handling 2015-02-10 09:27:20 +03:00
nvram fw_cfg: fix endianness in fw_cfg_data_mem_read() / _write() 2015-01-16 11:54:30 +00:00
openrisc hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
pci Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
pci-bridge pci: split shpc_cleanup and shpc_free 2015-02-16 17:30:14 +01:00
pci-host - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
pcmcia hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
ppc usb: error handling fixes from Markus, make sysbus ehci arm-only. 2015-02-25 11:54:15 +00:00
s390x s390x/pci: Rework memory access in zpci instruction 2015-02-18 09:37:15 +01:00
scsi scsi: give device a parent before setting properties 2015-02-27 14:43:44 +01:00
sd vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
sh4 r2d: Don't use legacy -usbdevice support for setting up board 2015-02-18 10:53:10 +01:00
sparc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
sparc64 isa: add memory space parameter to isa_bus_new 2015-02-13 14:09:27 +00:00
ssi ssi: xilinx_spi: Initialise CS GPIOs as NULL 2014-08-15 18:54:40 +04:00
timer fix mc146818rtc wrong subsection name to avoid vmstate_subsection_load() fail 2015-02-05 17:16:14 +01:00
tpm Drop superfluous conditionals around g_strdup() 2014-12-10 11:30:55 +03:00
tricore target-tricore: check return value before using it 2014-11-02 10:04:34 +03:00
unicore32 memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
usb Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
vfio vfio: Fix debug message compile error 2015-02-10 10:25:44 -07:00
virtio - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
watchdog vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
xen xen-pt: Fix PCI devices re-attach failed 2015-01-13 11:49:46 +00:00
xenpv hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
xtensa hw/xtensa/xtfpga: treat uImage load address as virtual 2014-11-03 01:00:37 +03:00
Makefile.objs vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00