linux/drivers/usb/dwc3
Amit Virdi ec512fb8e5 usb: dwc3: gadget: Fix TRB preparation during SG
When scatter gather (SG) is used, multiple TRBs are prepared from one DWC3
request (dwc3_request). So while preparing TRBs, the 'last' flag should be set
only when it is the last TRB being prepared from the last dwc3_request entry.

The current implementation uses list_is_last to check if the dwc3_request is the
last entry from the request_list. However, list_is_last returns false for the
last entry too. This is because, while preparing the first TRB from a request,
the function dwc3_prepare_one_trb modifies the request's next and prev pointers
while moving the URB to req_queued. Hence, list_is_last always returns false no
matter what.

The correct way is not to access the modified pointers of dwc3_request but to
use list_empty macro instead.

Fixes: e5ba5ec833 (usb: dwc3: gadget: fix scatter gather implementation)
Signed-off-by: Amit Virdi <amit.virdi@st.com>
Cc: <stable@vger.kernel.org> # v3.9+
Signed-off-by: Felipe Balbi <balbi@ti.com>
2015-01-14 11:28:23 -06:00
..
core.c usb: dwc3: core: enable phy suspend quirk on non-FPGA 2014-11-06 16:18:19 -06:00
core.h usb: dwc3: make HIRD threshold configurable 2014-11-03 10:03:41 -06:00
debug.c usb: dwc3: add tracepoints to aid debugging 2014-09-05 09:55:51 -05:00
debug.h usb: dwc3: add tracepoints to aid debugging 2014-09-05 09:55:51 -05:00
debugfs.c
dwc3-exynos.c usb: dwc3: exynos: Add provision for AXI UpScaler clock on exynos7 2014-11-21 09:07:29 -06:00
dwc3-keystone.c usb: dwc3: keystone: fix error return code 2014-11-20 13:35:46 -06:00
dwc3-omap.c usb: dwc3: dwc3-omap: get rid of ->prepare()/->complete() 2014-11-03 10:00:58 -06:00
dwc3-pci.c usb: dwc3: pci: add support for Intel Sunrise Point PCH 2014-12-22 10:39:14 -06:00
dwc3-qcom.c USB: Remove .owner field for driver 2014-09-28 21:55:10 -04:00
dwc3-st.c usb: dwc3: return error code from the most recent call 2014-11-24 08:38:27 -06:00
ep0.c Merge 3.18-rc7 into usb-next 2014-11-30 19:21:03 -08:00
gadget.c usb: dwc3: gadget: Fix TRB preparation during SG 2015-01-14 11:28:23 -06:00
gadget.h usb: dwc3: gadget: fix set_halt() bug with pending transfers 2014-10-20 15:58:48 -05:00
host.c usb: dwc3: host: convey the PHYs to xhci 2014-11-22 13:58:48 +05:30
io.h usb: dwc3: add tracepoints to aid debugging 2014-09-05 09:55:51 -05:00
Kconfig usb: dwc3: exynos: remove non-DT support for Exynos Specific Glue layer 2014-11-05 13:22:19 -06:00
Makefile usb: dwc3: Add Qualcomm DWC3 glue layer driver 2014-09-12 15:43:48 -05:00
platform_data.h usb: dwc3: make HIRD threshold configurable 2014-11-03 10:03:41 -06:00
trace.c usb: dwc3: add tracepoints to aid debugging 2014-09-05 09:55:51 -05:00
trace.h usb: dwc3: trace: don't save pointers 2014-11-20 10:12:32 -06:00