Files
linux/drivers
Amit Virdi 94b762f012 usb: dwc3: gadget: Fix TRB preparation during SG
commit ec512fb8e5 upstream.

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>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-01-27 07:52:32 -08:00
..
2013-12-08 07:29:25 -08:00
2014-11-21 09:22:52 -08:00
2014-03-06 21:30:14 -08:00
2014-04-14 06:42:18 -07:00
2015-01-27 07:52:31 -08:00
2014-02-20 11:06:11 -08:00
2014-12-06 15:05:49 -08:00