linux-sg2042/drivers/usb/dwc3
Jack Pham 4a71fcb8ac usb: dwc3: gadget: only unmap requests from DMA if mapped
A recent optimization was made so that a request put on the
pending_list wouldn't get mapped for DMA until just before
preparing a TRB for it. However, this poses a problem in case
the request is dequeued or the endpoint is disabled before the
mapping is done as that would lead to dwc3_gadget_giveback()
unconditionally calling usb_gadget_unmap_request_for_dev() with
an invalid request->dma handle. Depending on the platform's DMA
implementation the unmap operation could result in a panic.

Since we know a successful mapping is a prerequisite for getting
a TRB, the unmap can be conditionally called only when req->trb
is non-NULL.

Fixes: cdb55b39fa ("usb: dwc3: gadget: lazily map requests for DMA")
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
2017-07-17 11:01:27 +03:00
..
Kconfig usb: changes for v4.12 2017-04-11 16:47:26 +02:00
Makefile usb: dwc3: Add dual-role support 2017-04-11 10:58:31 +03:00
core.c usb: dwc3: core: Call dwc3_core_get_phy() before initializing phys 2017-07-17 10:58:56 +03:00
core.h usb: dwc3: update documentation 2017-06-02 11:22:27 +03:00
debug.h usb: dwc3: trace: decode ctrl request 2017-06-02 11:22:29 +03:00
debugfs.c usb: dwc3: debugfs: slightly improve output of trb_ring 2017-06-02 11:22:28 +03:00
drd.c usb: dwc3: Add dual-role support 2017-04-11 10:58:31 +03:00
dwc3-exynos.c usb: dwc3: exynos: Handle return value of clk_prepare_enable 2017-06-15 11:10:27 +03:00
dwc3-keystone.c usb: dwc3: keystone: check return value 2017-05-16 14:11:04 +03:00
dwc3-of-simple.c usb: dwc3: of-simple: add compatible for Cavium 2016-09-13 09:28:59 +03:00
dwc3-omap.c usb: dwc3: omap: remove IRQ_NOAUTOEN used with shared irq 2017-07-17 10:59:31 +03:00
dwc3-pci.c PM / core: Drop run_wake flag from struct dev_pm_info 2017-06-28 01:52:52 +02:00
dwc3-st.c usb: dwc3: replace %p with %pK 2017-06-02 11:22:10 +03:00
ep0.c usb: dwc3: ep0: make sure wValue is 0 on GetStatus() 2017-06-13 13:21:05 +03:00
gadget.c usb: dwc3: gadget: only unmap requests from DMA if mapped 2017-07-17 11:01:27 +03:00
gadget.h usb: dwc3: update documentation 2017-06-02 11:22:27 +03:00
host.c usb: dwc3: host: pass quirk-broken-port-ped property for known broken revisions 2017-01-26 11:17:37 +02:00
io.h usb: dwc3: trace: add a proper tracepoint for reg accessors 2016-11-03 10:38:30 +02:00
trace.c usb: dwc3: add tracepoints to aid debugging 2014-09-05 09:55:51 -05:00
trace.h usb: dwc3: trace: decode ctrl request 2017-06-02 11:22:29 +03:00
ulpi.c usb: dwc3: ulpi: conditionally resume ULPI PHY 2017-06-13 13:21:05 +03:00