From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755973AbcETOxk (ORCPT ); Fri, 20 May 2016 10:53:40 -0400 Received: from mail1.bemta3.messagelabs.com ([195.245.230.165]:41297 "EHLO mail1.bemta3.messagelabs.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752754AbcETOxi (ORCPT ); Fri, 20 May 2016 10:53:38 -0400 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOIsWRWlGSWpSXmKPExsVyU6aHU/exin2 4wbl5zBb/7yxitWhevJ7N4vKuOWwWi5a1Mlss2PiI0YHVY//cNewex29sZ/L4vEkugDmKNTMv Kb8igTXj27cXzAXTOCvWL3/G0sD4lr2LkYtDSGADo8Tii01sXYycHGwCZhK7Xq1jB7FFBIQkO nd8YAIpYhZYzShxdt5KsCJhAU+Jnl9XwYpYBFQlpizcwQJi8wr4SZyb8pIZxJYQkJO4ea4TzO YU8JdYtno5I4gtBFQz7d5qNoh6QYmTM5+A9TILSEgcfPGCGaJGW2L5nj52iDkKErNXbWCCsFM kXv/4ygJhW0u0/f3APoFRYBaSUbOQjFrAyLSKUb04tagstUjXWC+pKDM9oyQ3MTNH19DAWC83 tbg4MT01JzGpWC85P3cTIzCAGYBgB2PzF6dDjJIcTEqivGri9uFCfEn5KZUZicUZ8UWlOanFh xhlODiUJHgLgBEhJFiUmp5akZaZA4wlmLQEB4+SCK8JSJq3uCAxtzgzHSJ1ilFRSpxXBSQhAJ LIKM2Da4PF7yVGWSlhXkagQ4R4ClKLcjNLUOVfMYpzMCoJ83KDTOHJzCuBm/4KaDET0OJbYjY gi0sSEVJSDYxeLibRM/cZvtRY6W3Zeu7QFB72owECM8W3Sy81FZT7dmyO0aHMtqOpHzpy7t3+ dUUw2cjMt4/rn269z7r8tgNn4xtTTpfm1Sz7zT/1hcDCndPMJNcyOtj9Mw+NZw0JZs7YuspDx kT0+/tuzrerlmfPYUttqKwNeSI8IebO08p7tQ4cjovFOJVYijMSDbWYi4oTAROylUjaAgAA X-Env-Sender: andrew.goodbody@cambrionix.com X-Msg-Ref: server-3.tower-139.messagelabs.com!1463756001!20250648!4 X-Originating-IP: [217.28.140.9] X-StarScan-Received: X-StarScan-Version: 8.34; banners=-,-,- X-VirusChecked: Checked From: Andrew Goodbody To: CC: , , , Andrew Goodbody , Subject: [PATCH 2/2] usb: musb: Stop bulk endpoint while queue is rotated Date: Fri, 20 May 2016 15:51:42 +0100 Message-ID: <1463755902-12922-3-git-send-email-andrew.goodbody@cambrionix.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1463755902-12922-1-git-send-email-andrew.goodbody@cambrionix.com> References: <1463755902-12922-1-git-send-email-andrew.goodbody@cambrionix.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [46.17.166.30] X-ClientProxiedBy: SEHSTE15FE04.hs20.net (172.18.251.44) To THHSTE15D2BE2.hs20.net (192.168.251.32) X-EXCLAIMER-MD-CONFIG: 266e7a57-cddd-49fd-bdea-19bca6d40303 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Cc: stable@vger.kernel.org --- drivers/usb/musb/musb_host.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c index 30e0d65..777ff30 100644 --- a/drivers/usb/musb/musb_host.c +++ b/drivers/usb/musb/musb_host.c @@ -999,6 +999,8 @@ static void musb_bulk_nak_timeout(struct musb *musb, struct musb_hw_ep *ep, /* clear nak timeout bit */ rx_csr = musb_readw(epio, MUSB_RXCSR); rx_csr |= MUSB_RXCSR_H_WZC_BITS; + rx_csr &= ~MUSB_RXCSR_H_REQPKT; + musb_writew(epio, MUSB_RXCSR, rx_csr); rx_csr &= ~MUSB_RXCSR_DATAERROR; musb_writew(epio, MUSB_RXCSR, rx_csr); -- 2.7.4