qemu/hw/scsi
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
..
esp-pci.c esp: fix coding standards 2014-11-10 13:58:14 +01:00
esp.c esp: Do not overwrite ESP_TCHI after reset 2014-11-12 10:27:03 +01:00
lsi53c895a.c hw/scsi/lsi53c895a: add support for additional diag / debug registers 2015-01-14 10:38:57 +01:00
Makefile.objs virtio-scsi-dataplane: Code to run virtio-scsi on iothread 2014-09-30 11:11:20 +02:00
megasas.c scsi: Fuse g_malloc(); memset() into g_malloc0() 2014-12-15 12:21:02 +01:00
mfi.h megasas: add MegaRAID SAS 2108 emulation 2014-10-31 11:29:00 +01:00
scsi-bus.c scsi: give device a parent before setting properties 2015-02-27 14:43:44 +01:00
scsi-disk.c scsi-disk: provide maximum transfer length 2014-12-15 12:21:02 +01:00
scsi-generic.c scsi: Drop superfluous conditionals around g_free() 2014-12-15 12:21:02 +01:00
spapr_vscsi.c migration: Append JSON description of migration stream 2015-02-05 17:16:14 +01:00
srp.h spapr-vscsi: add task management 2013-09-12 08:46:21 +02:00
vhost-scsi.c Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
viosrp.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
virtio-scsi-dataplane.c dataplane: endianness-aware accesses 2015-02-16 15:07:16 +00:00
virtio-scsi.c virtio: fix feature bit checks 2015-01-27 14:46:17 +02:00
vmw_pvscsi.c scsi: Convert pvscsi HBA to hotplug handler API 2014-10-15 05:03:14 +02:00
vmw_pvscsi.h scsi: VMWare PVSCSI paravirtual device implementation 2013-04-19 10:44:17 +02:00