linux/drivers/usb/dwc2
Gregory Herrero 26a19ea699 usb: dwc2: host: fix use of qtd after free in desc dma mode
When completing non isoc xfer, dwc2_complete_non_isoc_xfer_ddma()
is relying on qtd->n_desc to process the corresponding number of
descriptors.

During the processing of these descriptors, qtd could be unlinked
and freed if xfer is done and urb is no more in progress.

In this case, dwc2_complete_non_isoc_xfer_ddma() will read again
qtd->n_desc whereas qtd has been freed. This will lead to unpredictable
results since qtd->n_desc is no more valid value.

To avoid this error, return a result != 0 in dwc2_process_non_isoc_desc(),
so that dwc2_complete_non_isoc_xfer_ddma() stops desc processing.

This has been seen with Slub debug enabled.

Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Gregory Herrero <gregory.herrero@intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2015-12-15 09:12:41 -06:00
..
core_intr.c usb: dwc2: exit hibernation on session request 2015-10-01 12:40:27 -05:00
core.c usb: dwc2: fix duplicate argument warning 2015-10-13 13:17:42 -05:00
core.h usb: dwc2: refactor common low-level hw code to platform.c 2015-10-14 08:40:15 -05:00
debug.h usb: dwc2: move debugfs code to a separate file 2015-04-29 15:18:25 -05:00
debugfs.c usb: dwc2: Use platform endianness when accessing registers 2015-09-27 10:54:31 -05:00
gadget.c usb: dwc2: refactor common low-level hw code to platform.c 2015-10-14 08:40:15 -05:00
hcd_ddma.c usb: dwc2: host: fix use of qtd after free in desc dma mode 2015-12-15 09:12:41 -06:00
hcd_intr.c usb: dwc2: host: Fix use after free w/ simultaneous irqs 2015-10-19 09:22:46 -05:00
hcd_queue.c usb: dwc2: host: use correct frame number during qh init 2015-10-01 12:40:18 -05:00
hcd.c usb: dwc2: host: Fix remote wakeup when not in DWC2_L2 2015-11-17 11:35:38 -06:00
hcd.h usb: dwc2: Use platform endianness when accessing registers 2015-09-27 10:54:31 -05:00
hw.h usb: dwc2: gadget: parity fix in isochronous mode 2015-10-02 13:10:57 -05:00
Kconfig usb: dwc2: remove dwc2_platform.ko 2015-04-29 15:20:11 -05:00
Makefile usb: dwc2: remove dwc2_platform.ko 2015-04-29 15:20:11 -05:00
pci.c usb: dwc2: pci: Add device mode to the dwc2-pci driver 2015-03-11 15:08:17 -05:00
platform.c usb: dwc2: fix kernel oops during driver probe 2015-11-20 09:29:47 -06:00