projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
f1809fb
)
usb: cdns3: gadget: link trb should point to next request
author
Peter Chen
<peter.chen@nxp.com>
Wed, 19 Feb 2020 14:14:54 +0000
(22:14 +0800)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 12 Mar 2020 12:00:18 +0000
(13:00 +0100)
commit
8a7c47fb7285b23ca259c888016513d5566fa9e8
upstream.
It has marked the dequeue trb as link trb, but its next segment
pointer is still itself, it causes the transfer can't go on. Fix
it by set its pointer as the trb address for the next request.
Fixes:
f616c3bda47e
("usb: cdns3: Fix dequeue implementation")
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Cc: stable <stable@vger.kernel.org>
Link:
https://lore.kernel.org/r/20200219141455.23257-2-peter.chen@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/cdns3/gadget.c
patch
|
blob
|
history
diff --git
a/drivers/usb/cdns3/gadget.c
b/drivers/usb/cdns3/gadget.c
index
02f6ca2
..
49a189e
100644
(file)
--- a/
drivers/usb/cdns3/gadget.c
+++ b/
drivers/usb/cdns3/gadget.c
@@
-2107,7
+2107,7
@@
found:
/* Update ring only if removed request is on pending_req_list list */
if (req_on_hw_ring) {
link_trb->buffer = TRB_BUFFER(priv_ep->trb_pool_dma +
-
(priv_req->start_trb
* TRB_SIZE));
+
((priv_req->end_trb + 1)
* TRB_SIZE));
link_trb->control = (link_trb->control & TRB_CYCLE) |
TRB_TYPE(TRB_LINK) | TRB_CHAIN;