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)
committerDanny Wood <danwood76@gmail.com>
Tue, 29 Jan 2019 13:13:17 +0000 (13:13 +0000)
commit0263d58dd24f44f8ce7062126f0523c231332d6e
tree49e6ecc4e157ab94d9c1bc696a48a5f5d9698e61
parent528958f9deb5901597f00e8e4ad52f4a2550dcde
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