qemu-irix/hw/usb
Laszlo Ersek 750f169519 vmstate_xhci_event: fix unterminated field list
"vmstate_xhci_event" was introduced in commit 37352df3 ("xhci: add live
migration support"), and first released in v1.6.0. The field list in this
VMSD is not terminated with the VMSTATE_END_OF_LIST() macro.

During normal use (ie. migration), the issue is practically invisible,
because the "vmstate_xhci_event" object (with the unterminated field list)
is only ever referenced -- via "vmstate_xhci_intr" -- if xhci_er_full()
returns true, for the "ev_buffer" test. Since that field_exists() check
(apparently) almost always returns false, we almost never traverse
"vmstate_xhci_event" during migration, which hides the bug.

However, Amit's vmstate checker forces recursion into this VMSD as well,
and the lack of VMSTATE_END_OF_LIST() breaks the field list terminator
check (field->name != NULL) in dump_vmstate_vmsd(). The result is
undefined behavior, which in my case translates to infinite recursion
(because the loop happens to overflow into "vmstate_xhci_intr", which then
links back to "vmstate_xhci_event").

Add the missing terminator.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Amit Shah <amit.shah@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
(cherry picked from commit 3afca1d6d4)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2014-08-06 14:55:49 -05:00
..
Makefile.objs usb: add support for microsoft os descriptors 2014-01-16 12:59:59 +01:00
bus.c usb: sanity check setup_index+setup_len in post_load 2014-07-20 22:05:55 -05:00
ccid-card-emulated.c Add a 'name' parameter to qemu_thread_create 2014-03-09 21:09:38 +02:00
ccid-card-passthru.c devices: Associate devices to their logical category 2013-07-29 10:37:09 -05:00
ccid.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
combined-packet.c usb: Fix iovec memleak on combined-packet free 2013-09-19 11:28:40 +02:00
core.c usb: Add max_streams attribute to endpoint info 2013-11-26 09:21:17 +01:00
desc-msos.c usb: add support for microsoft os descriptors 2014-01-16 12:59:59 +01:00
desc.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
desc.h usb: add support for microsoft os descriptors 2014-01-16 12:59:59 +01:00
dev-audio.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
dev-bluetooth.c usb: Fix usb-bt-dongle initialization. 2014-08-05 14:00:31 -05:00
dev-hid.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
dev-hub.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
dev-network.c - xhci improvements and fixes. 2014-02-20 15:25:05 +00:00
dev-serial.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
dev-smartcard-reader.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
dev-storage.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
dev-uas.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
dev-wacom.c usb: Remove magic constants from device bmAttributes 2014-02-18 15:39:12 +01:00
hcd-ehci-pci.c qdev:pci: refactor PCIDevice to use generic "hotpluggable" property 2014-02-10 10:26:56 +02:00
hcd-ehci-sysbus.c devices: Associate devices to their logical category 2013-07-29 10:37:09 -05:00
hcd-ehci.c Improvements for usb3 bulk stream (usb core, xhci). 2013-12-06 12:54:36 -08:00
hcd-ehci.h trace: Remove trace.h from hw/usb/hcd-ehci.h (less dependencies) 2013-12-02 21:02:00 +04:00
hcd-musb.c usb: Pass size to usb_bus_new() 2013-08-30 20:14:39 +02:00
hcd-ohci.c hw/usb/hcd-ohci.c: Avoid shifting left into sign bit 2014-03-27 19:22:49 +04:00
hcd-uhci.c uhci: invalidate queue on device address changes 2014-02-18 15:39:13 +01:00
hcd-xhci.c vmstate_xhci_event: fix unterminated field list 2014-08-06 14:55:49 -05:00
host-legacy.c qdev: Drop misleading qdev_free() function 2013-11-05 18:06:38 +01:00
host-libusb.c qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
host-stub.c usb-host: remove usb_host_device_close 2013-02-19 12:30:05 +01:00
host.h usb-host: move legacy cmd line bits 2013-02-19 12:30:05 +01:00
libhw.c dma: eliminate DMAContext 2013-06-20 16:39:52 +02:00
quirks-ftdi-ids.h usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
quirks-pl2303-ids.h usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
quirks.c usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
quirks.h usbredir: Add support for buffered bulk input (v2) 2013-01-08 10:56:58 +01:00
redirect.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00