From patchwork Wed Jun 8 07:32:50 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yoshihiro Shimoda X-Patchwork-Id: 9163525 X-Patchwork-Delegate: geert@linux-m68k.org Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 7088560832 for ; Wed, 8 Jun 2016 07:33:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 615C62837E for ; Wed, 8 Jun 2016 07:33:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5615D2838E; Wed, 8 Jun 2016 07:33:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B9BEE2837E for ; Wed, 8 Jun 2016 07:33:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754284AbcFHHdf (ORCPT ); Wed, 8 Jun 2016 03:33:35 -0400 Received: from relmlor1.renesas.com ([210.160.252.171]:40911 "EHLO relmlie4.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752864AbcFHHdT (ORCPT ); Wed, 8 Jun 2016 03:33:19 -0400 Received: from unknown (HELO relmlir4.idc.renesas.com) ([10.200.68.154]) by relmlie4.idc.renesas.com with ESMTP; 08 Jun 2016 16:33:18 +0900 Received: from relmlac2.idc.renesas.com (relmlac2.idc.renesas.com [10.200.69.22]) by relmlir4.idc.renesas.com (Postfix) with ESMTP id 5AEC24E7E4; Wed, 8 Jun 2016 16:33:18 +0900 (JST) Received: by relmlac2.idc.renesas.com (Postfix, from userid 0) id 477AC2806D; Wed, 8 Jun 2016 16:33:18 +0900 (JST) Received: from relmlac2.idc.renesas.com (localhost [127.0.0.1]) by relmlac2.idc.renesas.com (Postfix) with ESMTP id 3B5A32806F; Wed, 8 Jun 2016 16:33:18 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac2.idc.renesas.com with ESMTP id SAL02447; Wed, 8 Jun 2016 16:33:18 +0900 X-IronPort-AV: E=Sophos;i="5.22,559,1449500400"; d="scan'208";a="212553155" Received: from mail-sg2apc01lp0243.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.243]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA; 08 Jun 2016 16:33:17 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xwtk9g6BlajoC/EwuFUhRVq1nt+ycI+mw4O9q//UNYo=; b=lQmnSPu9J5y3k+NB9hpC1IYZRAiWQ61suRkb2KwOt8Xgk+0srQ6MudNpK/mNo+ENqwFmeqNNdi5s9STqMYuWDKL8x3vVpOQqPs2+8ecWI2EgxenK/+p/f+J5XH2cVYl6gbIBvqHv1HcRi7AHfEceOO80IO1lLoZjxGQIlom2Kkw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=<>; Received: from localhost (211.11.155.144) by SG2PR06MB0920.apcprd06.prod.outlook.com (10.162.204.153) with Microsoft SMTP Server (TLS) id 15.1.511.8; Wed, 8 Jun 2016 07:33:15 +0000 From: Yoshihiro Shimoda To: CC: , , , , Yoshihiro Shimoda Subject: [PATCH 2/2] usb: renesas_usbhs: protect the CFIFOSEL setting in usbhsg_ep_enable() Date: Wed, 8 Jun 2016 16:32:50 +0900 Message-ID: <1465371170-4828-3-git-send-email-yoshihiro.shimoda.uh@renesas.com> X-Mailer: git-send-email 1.9.4.msysgit.1 In-Reply-To: <1465371170-4828-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> References: <1465371170-4828-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> MIME-Version: 1.0 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TY1PR06CA0037.apcprd06.prod.outlook.com (10.164.91.47) To SG2PR06MB0920.apcprd06.prod.outlook.com (10.162.204.153) X-MS-Office365-Filtering-Correlation-Id: 19dbaefa-d309-4933-1bf7-08d38f6f27d2 X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0920; 2:OSZrJ5HuImPRe0zeWiPpfSMxVVBzJUhP4TylsMzXB016p+vKTtekwFlMlD21A0LOLWgQ61od/y9AcVCxVMV/gsIYJzBcSe1PviIPk5wQBkU5STTvr1Em7Mqhus4CnHx+wYM4xv42h02zpzXE0+58XEXMZvGhm5MIJPETG89kqe8dwS1lQS4HtgZPKRRK8heH; 3:P2/6nw/egRYRyiG1YinSuLMJz9L0tVpPT5erjMrSFTdquvjS62xBLBpt4vsOJ3JWVQEeaMSCsz/gd0XNe9zicD3xh4wGTWF2xHIeO4BcHC0tMJeB5Cn3Tscw8i16YudV X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SG2PR06MB0920; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0920; 25:shI7moQgKUTpr/ZqO5shunrJFV0QyvbNgOZH3ibRcPsf7iZTXWVtzd8GZBIIplLo/CvqfOgOIPbBbitrJ1pe85yQ9C3KTxMLNvhY2dkd/FljCvwjAoJUXFarAJ+UcvZ3XUMpZTdyE0aEtnOUWx1hCxrE8rEhV0/arEOsw2YQ7EFlHZFVOkpt1jGYEePID+7Z/IpVzYTCEzgO90ax52gO5AYPh7eLIr1YyNr5UwAth1b+ylPmwdMnPGoTy9BIJBFxiUhhvVmougCDXBIRDzouf9RdRsRYk7ytbKsl3pwx7kVP4bshW4PFg4hz7Z+yrUv/twQI9rVsZLsbb+nsWbVkxGt0squ6bZy1wwPLlwzFERfLUGMLgNqEIwp0+mQvJf4/wRBLGpaN0/RHLBkY4KekblSkprij0ASANvlpCmtFDoNB8wFhrITvaHGgJuVlJo4jlWVtOqtw0llEygVoQ/zzro6gn7cmJvIrPdK2BEdUCdM66u9KRv8ts0KFLjUfJL27ov5PMYwEVvmqh1H1XQQnOqN+DX5dTkbIyM7MDcnwWJMoHZXY9ZuZTDprI9iWT/qBJEjzJi984u0DAzGoqNrK03Mwu2AIo3IL2trxfB/z6vNLn33/YoMepn3tgjBgFrAzqfCXz7puWtXmB1YHaIv4vN/hmH2Bc4XfCY40uaKHqHVXfJE2ClFnZhtFoXnB7u1/N6P344muKfORoWalQ0H+djciEvcXKmgvTtH2xeF04SinVzz2RUy+6iKBMNhOLDyl X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0920; 20:lLidCP198U0zccpoUd6GGz/W49W49KfGgUoGr4xevSj4zkff79DsxIx5VSHRmPl9v4NoP6dyqcSBi7HwuififbFJcFp7GWKNLB7D+fLUmmLOgZ/+xl0hd5f29aRRt1Js8p4rdK6eQvEMzv5DfQpq2qGu+DiSsAedvEGiCUV96KL3B8uPyBbxEn8PWalvr+2HxSMDVLrF8EBpfzptijI6heLWT78ES9T04hmBFyZmvL+J5XnIvJZiy4TiDv0S4mpzpkZD1+Z0SFXlcE31Fq/IMPuOOzZAFCVzL5RFcdfzEqOryLb2Ofcwrt29iFjs/af/d8FvzEOL2cNLvyuKNLK5uWEdRs4XlUNjHudc8OlWm8cNgBd2Z7gLuonznquLEG5wmo+lBO+d2ohn5TKw/exWENnMEXsNt4OeIo62ZEfGHOSSchX20SpV9TDim1Ha8obNifIENs1AOpwOf+N1Gdhd1x6m1FEafyX7uXjeMfXTFv/i9dW6XmX0LtUcgwKPTsMa X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(116097685857584); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6058028); SRVR:SG2PR06MB0920; BCL:0; PCL:0; RULEID:; SRVR:SG2PR06MB0920; X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0920; 4:NOmthQVbXTF17acSgeTXKEEPUvn6X7J5XwyRGaj6fKqKFhBenHpwcG6wcBj7+q0WLslV5n8Vfmfs4RFK7iqhM2K4icdQcTiFg/lNaj6W6QF7teSiPiF8wd4HcK1fFjYywTCavYI4Pouk3F+/KpoqllItFg2QBZ8fxZzQpQCU6Crpsrukanor6T9BdGQjje6AUm+Tcv/AXremP+wAR0k+SYup11Z3kKMO49i0U1JlrehF5qhw1beq7oBKH12BsqySH9zsrvlONOSHOnIfHP6wznIwF1+JsFn9WQKbuZb+bgaVluIa/1YxA3ucyNS/fysYHDNJkNv5w767zRWmkZKzfNyE+CRezH3bJv/nHo0A6MytNurYfWGO8Lj7WcUlhYg7FN8HQu/4uIfEFL4esUHLvl/nAqoSRXz34dxAeABrSNYW7K1dWyBXZZvpA+kzK5T8Q60HPjj7ztIjgx3yD7XCmDLa0Ln/Z31kP7/Xqn0wfKw= X-Forefront-PRVS: 0967749BC1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6069001)(6009001)(189002)(199003)(229853001)(2351001)(68736007)(2906002)(33646002)(189998001)(77096005)(3846002)(36756003)(76506005)(107886002)(110136002)(66066001)(6116002)(586003)(92566002)(5003940100001)(50986999)(76176999)(97736004)(4326007)(101416001)(2950100001)(42186005)(78352004)(81156014)(106356001)(8676002)(81166006)(50226002)(105586002)(4001430100002)(5008740100001)(50466002)(48376002)(19580405001)(47776003)(5004730100002)(19580395003); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR06MB0920; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:0; A:0; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SG2PR06MB0920; 23:mQOvAdGAptT+wS1dIwpOAMw3FbaLz3QWcwsWHzFrx?= =?us-ascii?Q?nQpDBHHNkCKoczlIinWYoiwHMzuJ0SqUAoBHEXX5vjcqgvzAd1kAiqWkAJI/?= =?us-ascii?Q?kRbEm3EF9nTXfc7CRQZFjjr9zUagbLres+wCmBvk+qAzVb3ijpyv0quxDXnm?= =?us-ascii?Q?8SIf+6EiBeTOYs4qoAhFlDmmDfEBhkv/8sZm/8KTwkS4L2evrQKqOppPu6c9?= =?us-ascii?Q?me59YO7kBM24VehcfoKjQ8fksfye9Yr+DJogX2jBnfGYOf7/t4SXuv81+ru0?= =?us-ascii?Q?K1PGnfMo2ojamBpC3EhWj3x+ytBOEEImW6I5YMY6Y0KG7Tg0GwftU3fJjEu3?= =?us-ascii?Q?YL0lKhh95xbBzvxdF3qN21eC2X49NgVrJ5IgrDsV3ZKg/3TH2gXfeQDNSWPr?= =?us-ascii?Q?PtM57PpR+UoOQm/hMVlaERd0Q/5Kw96fQR/0qLzFRmFw3td5/sgtHU/mA8lq?= =?us-ascii?Q?7xWEbpeYwA1ZgFmi5Xnmof5YgwhPoO5TWAOolfBmY17RIc0BCYkfuGy5zcBF?= =?us-ascii?Q?amNZr2EsbpciTWIvvAYJ/U81cHQ2ZJLE0ZSPhqMdkkycRK+qqBBr8SHQrExe?= =?us-ascii?Q?rilqYuPo0UMx4ye2iDBS/5KBsNU5Tfk/Ze/vr7IaeY6pesc+GJ1QpqsGOk79?= =?us-ascii?Q?JYht8PlKwRTRHIy24j4+UcDSEqeQn52VWnUlwYSwgOT1gTMT2vR/JvjuT5OY?= =?us-ascii?Q?tbIXb1NPKTx0VJJfPDiONMalAd7Tu1cvaSrTiMOezHMSsYcNMBDBO05L2CEx?= =?us-ascii?Q?8xLkWADE/W/91bO9CkYHJ3mRnEAKvJqLVv/yadzmwhE+le5O+amOKYkPp8ba?= =?us-ascii?Q?psJl0JYofsZK8VH5SsN4G2ToldcqKj+mZBriVNSV1L0OXmhsFNMU4wCvVrkC?= =?us-ascii?Q?v/QifbYnGF8J1X0a9pnvTZhYzE+5s+n0QF/C0qOkVQawAPzWh9UCdHVcz9x/?= =?us-ascii?Q?iTsrfIzSSjPYSLWVaB0+8ItBZzgoFcUXACdUTTkMo1GCX/wIBeYSbJ+yyMKg?= =?us-ascii?Q?G07ZjV3lyTSkJmizdtm1I6rONpXPPTs4Niabh02jpdZl8X41rHTbXt8X5Jx2?= =?us-ascii?Q?b35NzlRyFB4w+0pteN5eB1s3yVMiLtTxvrHudzA8W31xUVuQ0u9tdFOPx8za?= =?us-ascii?Q?AyVuS/0Xg3cURQADTzy+D/LCfmlc/FF?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR06MB0920; 5:GzgajUk7i6SofzRQUKmb5wwloqUAUPmiLkRzp0dqfV9nTbMshrpmRj5fswJ1SQTwclSxtDQpG40N4jdrBnd7aEUZ5DmSNa2t0QIfhWqasOmXq58eop+i0QsrBcOwMkhODJjja2L7Ch/9d1FyzJd63A==; 24:BXhQBbARyJSWnRR1UPZ9e44tuP/b/dPnrPI8KctrnBhzTot1QIGnr1D8vjXS6v5mlcEzVGLh3hGiyuqKBftQHk/YJ9WYIx7IeGd2Wqfqov8=; 7:vrl2cgotOjAN9LbpPKcJbqVEpv9qrZVrDIyrQqYOgHQiadK0Bue3mbZ6thYMTWtcqgD1rnIKMHl3nWa3+eXJboILOA3p+8G4xRV15ng9H7aQlVdZix+K3/XL7jBIjfHo9SrLSfbwbK/6hhUPT3ZTkFdUXUHvdF+g8jKcz0shdvxIuxl5z/R70CqbfRbrLCQQcegHtcpd4zbl3pvLTq1KPA==; 20:20JVnxMKcZE0zciGN7kxSVR529cUdjQYsRbN7i8sNvIOgeg+a0nAhMOZ9mc0bw9cY4F07pqPlPizMJliOJziDvaJgKv6H1HTo3gUBminFycVBGPEZZnN2VZsIZ2i7fN6dP+a8PtCjcUymbzQzBIxVWUHDn5/rOIj4GqfB6Zi3dY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2016 07:33:15.8625 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR06MB0920 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch fixes an issue that the CFIFOSEL register value is possible to be changed by usbhsg_ep_enable() wrongly. And then, a data transfer using CFIFO may not work correctly. For example: # modprobe g_multi file=usb-storage.bin # ifconfig usb0 192.168.1.1 up (During the USB host is sending file to the mass storage) # ifconfig usb0 down In this case, since the u_ether.c may call usb_ep_enable() in eth_stop(), if the renesas_usbhs driver is also using CFIFO for mass storage, the mass storage may not work correctly. So, this patch adds usbhs_lock() and usbhs_unlock() calling in usbhsg_ep_enable() to protect CFIFOSEL register. This is because: - CFIFOSEL.CURPIPE = 0 is also needed for the pipe configuration - The CFIFOSEL (fifo->sel) is already protected by usbhs_lock() Fixes: 97664a207bc2 ("usb: renesas_usbhs: shrink spin lock area") Cc: # v3.1+ Signed-off-by: Yoshihiro Shimoda --- drivers/usb/renesas_usbhs/mod_gadget.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c index 30345c2..50f3363 100644 --- a/drivers/usb/renesas_usbhs/mod_gadget.c +++ b/drivers/usb/renesas_usbhs/mod_gadget.c @@ -585,6 +585,9 @@ static int usbhsg_ep_enable(struct usb_ep *ep, struct usbhs_priv *priv = usbhsg_gpriv_to_priv(gpriv); struct usbhs_pipe *pipe; int ret = -EIO; + unsigned long flags; + + usbhs_lock(priv, flags); /* * if it already have pipe, @@ -593,7 +596,8 @@ static int usbhsg_ep_enable(struct usb_ep *ep, if (uep->pipe) { usbhs_pipe_clear(uep->pipe); usbhs_pipe_sequence_data0(uep->pipe); - return 0; + ret = 0; + goto usbhsg_ep_enable_end; } pipe = usbhs_pipe_malloc(priv, @@ -621,6 +625,9 @@ static int usbhsg_ep_enable(struct usb_ep *ep, ret = 0; } +usbhsg_ep_enable_end: + usbhs_unlock(priv, flags); + return ret; }