usb: musb: Stop bulk endpoint while queue is rotated
authorAndrew Goodbody <andrew.goodbody@cambrionix.com>
Tue, 31 May 2016 15:05:27 +0000 (10:05 -0500)
committerWilly Tarreau <w@1wt.eu>
Sun, 21 Aug 2016 21:22:35 +0000 (23:22 +0200)
commit788d2a8d062f123a1914f51606e4f2f9be149985
tree97b7d9147704ebce8b177af3871616fd5d0091aa
parent1883edde34d586fca99033e88f074239041cf7b6
usb: musb: Stop bulk endpoint while queue is rotated

commit 7b2c17f829545df27a910e8d82e133c21c9a8c9c upstream.

Ensure that the endpoint is stopped by clearing REQPKT before
clearing DATAERR_NAKTIMEOUT before rotating the queue on the
dedicated bulk endpoint.
This addresses an issue where a race could result in the endpoint
receiving data before it was reprogrammed resulting in a warning
about such data from musb_rx_reinit before it was thrown away.
The data thrown away was a valid packet that had been correctly
ACKed which meant the host and device got out of sync.

Signed-off-by: Andrew Goodbody <andrew.goodbody@cambrionix.com>
Cc: stable@vger.kernel.org
Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Willy Tarreau <w@1wt.eu>
drivers/usb/musb/musb_host.c