qemu-irix/hw/usb
Thomas Huth b234266086 hw/usb/bus: Remove bad object_unparent() from usb_try_create_simple()
Valgrind detects an invalid read operation when hot-plugging of an
USB device fails:

$ valgrind x86_64-softmmu/qemu-system-x86_64 -device usb-ehci -nographic -S
==30598== Memcheck, a memory error detector
==30598== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==30598== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info
==30598== Command: x86_64-softmmu/qemu-system-x86_64 -device usb-ehci -nographic -S
==30598==
QEMU 2.10.50 monitor - type 'help' for more information
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
(qemu) device_add usb-tablet
==30598== Invalid read of size 8
==30598==    at 0x60EF50: object_unparent (object.c:445)
==30598==    by 0x580F0D: usb_try_create_simple (bus.c:346)
==30598==    by 0x581BEB: usb_claim_port (bus.c:451)
==30598==    by 0x582310: usb_qdev_realize (bus.c:257)
==30598==    by 0x4CB399: device_set_realized (qdev.c:914)
==30598==    by 0x60E26D: property_set_bool (object.c:1886)
==30598==    by 0x61235E: object_property_set_qobject (qom-qobject.c:27)
==30598==    by 0x61000F: object_property_set_bool (object.c:1162)
==30598==    by 0x4567C3: qdev_device_add (qdev-monitor.c:630)
==30598==    by 0x456D52: qmp_device_add (qdev-monitor.c:807)
==30598==    by 0x470A99: hmp_device_add (hmp.c:1933)
==30598==    by 0x3679C3: handle_hmp_command (monitor.c:3123)

The object_unparent() here is not necessary anymore since commit
69382d8b3e ("qdev: Fix object reference leak in case device.realize()
fails"), so let's remove it now.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-id: 1506526106-30971-1-git-send-email-thuth@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit f3b2bea3c7)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2017-12-04 20:37:19 -06:00
..
Makefile.objs xhci: add CONFIG_USB_XHCI_NEC option 2017-05-29 14:03:36 +02:00
bus.c hw/usb/bus: Remove bad object_unparent() from usb_try_create_simple() 2017-12-04 20:37:19 -06:00
ccid-card-emulated.c Remove/replace sysemu/char.h inclusion 2017-06-02 11:33:52 +04:00
ccid-card-passthru.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
ccid.h usb: Change *_exitfn return type from int to void 2016-10-28 18:17:23 +03:00
combined-packet.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
core.c usb: don't wakeup during coldplug 2017-05-29 14:18:09 +02:00
desc-msos.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
desc.c usb: accept usb3 control requests 2017-02-06 10:23:17 +01:00
desc.h all: Clean up includes 2016-02-23 12:43:05 +00:00
dev-audio.c usb: replace handle_destroy with unrealize 2017-02-23 15:40:19 +01:00
dev-bluetooth.c usb: replace handle_destroy with unrealize 2017-02-23 15:40:19 +01:00
dev-hid.c usb: replace handle_destroy with unrealize 2017-02-23 15:40:19 +01:00
dev-hub.c usb-hub: set PORT_STAT_C_SUSPEND on host-initiated wake-up 2017-05-29 14:17:59 +02:00
dev-mtp.c usb: Set category and description of the MTP device 2017-01-24 23:26:54 +03:00
dev-network.c usb: replace handle_destroy with unrealize 2017-02-23 15:40:19 +01:00
dev-serial.c char: avoid chardevice direct access 2017-07-14 11:04:33 +02:00
dev-smartcard-reader.c Convert error_report() to warn_report() 2017-07-13 13:49:58 +02:00
dev-storage.c -----BEGIN PGP SIGNATURE----- 2017-03-02 15:25:37 +00:00
dev-uas.c usb: release the created buses 2017-03-01 11:51:29 +04:00
dev-wacom.c usb: replace handle_destroy with unrealize 2017-02-23 15:40:19 +01:00
hcd-ehci-pci.c usb: ehci: fix memory leak in ehci 2017-02-21 08:11:42 +01:00
hcd-ehci-sysbus.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
hcd-ehci.c ehci: add sanity check for maxframes 2017-07-17 11:39:08 +02:00
hcd-ehci.h ehci: stop recursive calls to ehci_work_bh 2017-06-13 12:17:33 +02:00
hcd-musb.c Replaced get_tick_per_sec() by NANOSECONDS_PER_SECOND 2016-03-22 22:20:17 +01:00
hcd-ohci.c trace: add trace_event_get_state_backends() 2017-08-01 12:13:07 +01:00
hcd-uhci.c vmstate: error hint for failed equal checks 2017-06-28 11:18:44 +02:00
hcd-xhci-nec.c xhci: split into multiple files 2017-05-29 14:03:35 +02:00
hcd-xhci.c pci: Fix the wrong assertion. 2017-07-03 22:29:49 +03:00
hcd-xhci.h xhci: split into multiple files 2017-05-29 14:03:35 +02:00
host-legacy.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
host-libusb.c usb-host: support devices with sparse/non-sequential USB interfaces 2017-06-21 15:30:08 +02:00
host-stub.c hw/ppc/spapr: Fix boot path of usb-host storage devices 2017-01-31 10:10:13 +11:00
host.h usb-host: move legacy cmd line bits 2013-02-19 12:30:05 +01:00
libhw.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
quirks-ftdi-ids.h
quirks-pl2303-ids.h
quirks.c usb: Clean up includes 2016-01-29 15:07:23 +00:00
quirks.h
redirect.c * gdbstub fixes (Alex) 2017-07-14 12:16:09 +01:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
tusb6010.c Replaced get_tick_per_sec() by NANOSECONDS_PER_SECOND 2016-03-22 22:20:17 +01:00
xen-usb.c qapi: merge QInt and QFloat in QNum 2017-06-20 14:31:31 +02:00