From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2] usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup From: Jack Pham Message-Id: <20190110203955.10724-1-jackp@codeaurora.org> Date: Thu, 10 Jan 2019 12:39:55 -0800 To: Felipe Balbi Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Jack Pham , stable@vger.kernel.org List-ID: T1VUIGVuZHBvaW50IHJlcXVlc3RzIG1heSBzb210aW1lcyBoYXZlIHRoaXMgZmxhZyBzZXQgd2hl bgpwcmVwYXJpbmcgdG8gYmUgc3VibWl0dGVkIHRvIEhXIGluZGljYXRpbmcgdGhhdCB0aGVyZSBp cyBhbgphZGRpdGlvbmFsIFRSQiBjaGFpbmVkIHRvIHRoZSByZXF1ZXN0IGZvciBhbGlnbm1lbnQg cHVycG9zZXMuCklmIHRoYXQgcmVxdWVzdCBpcyByZW1vdmVkIGJlZm9yZSB0aGUgY29udHJvbGxl ciBjYW4gZXhlY3V0ZSB0aGUKdHJhbnNmZXIgKGUuZy4gZXBfZGVxdWV1ZS9lcF9kaXNhYmxlKSwg dGhlIHJlcXVlc3Qgd2lsbCBub3QgZ28KdGhyb3VnaCB0aGUgZHdjM19nYWRnZXRfZXBfY2xlYW51 cF9jb21wbGV0ZWRfcmVxdWVzdCgpIGhhbmRsZXIKYW5kIHdpbGwgbm90IGhhdmUgaXRzIG5lZWRz X2V4dHJhX3RyYiBmbGFnIGNsZWFyZWQgd2hlbgpkd2MzX2dhZGdldF9naXZlYmFjaygpIGlzIGNh bGxlZC4gIFRoaXMgc2FtZSByZXF1ZXN0IGNvdWxkIGJlCmxhdGVyIHJlcXVldWVkIGZvciBhIG5l dyB0cmFuc2ZlciB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW4KZXh0cmEgVFJCIGFuZCBpZiBpdCBp cyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLCB0aGUgY2xlYW51cAphbmQgVFJCIHJlY2xhbWF0aW9u IHdpbGwgaW5jb3JyZWN0bHkgcHJvY2VzcyB0aGUgYWRkaXRpb25hbCBUUkIKd2hpY2ggYmVsb25n cyB0byB0aGUgbmV4dCByZXF1ZXN0LCBhbmQgaW5jb3JyZWN0bHkgYWR2YW5jZXMgdGhlClRSQiBk ZXF1ZXVlIHBvaW50ZXIsIHRoZXJlYnkgbWVzc2luZyB1cCBjYWxjdWxhdGlvbiBvZiB0aGUgbmV4 dApyZXF1ZXVzdCdzIGFjdHVhbC9yZW1haW5pbmcgY291bnQgd2hlbiBpdCBjb21wbGV0ZXMuCgpU aGUgcmlnaHQgdGhpbmcgdG8gZG8gaGVyZSBpcyB0byBlbnN1cmUgdGhhdCB0aGUgZmxhZyBpcyBj bGVhcmVkCmJlZm9yZSBpdCBpcyBnaXZlbiBiYWNrIHRvIHRoZSBmdW5jdGlvbiBkcml2ZXIuICBB IGdvb2QgcGxhY2UKdG8gZG8gdGhhdCBpcyBpbiBkd2MzX2dhZGdldF9kZWxfYW5kX3VubWFwX3Jl cXVlc3QoKS4KCkZpeGVzOiBjNjI2N2E1MTYzOWIgKCJ1c2I6IGR3YzM6IGdhZGdldDogYWxpZ24g dHJhbnNmZXJzIHRvIHdNYXhQYWNrZXRTaXplIikKQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcK U2lnbmVkLW9mZi1ieTogSmFjayBQaGFtIDxqYWNrcEBjb2RlYXVyb3JhLm9yZz4KLS0tCnYyOiBB ZGRlZCBGaXhlcyB0YWcgYW5kIENjOiBzdGFibGUKCkZlbGlwZSwgYXMgSSBtZW50aW9uZWQgaW4g dGhlIGNvdmVyIGZvciB2MSwgZm9yIHN0YWJsZSAoZnJvbSA0LjExIHdoZXJlCmM2MjY3YTUxNjM5 YiBmaXJzdCBsYW5kZWQgdGhyb3VnaCA0LjIwKSwgdGhlIGZpeCBuZWVkcyB0byBiZSBtb2RpZmll ZCB0bwphc3NpZ24gdG8gdGhlIHNlcGFyYXRlIHJlcS0+dW5hbGlnbmVkIGFuZCByZXEtPnplcm8g ZmxhZ3MgaW4gbGlldSBvZgpuZWVkc19leHRyYV90cmIgd2hpY2ggYXBwZWFyZWQgaW4gNS4wLXJj MSBpbjoKCgljb21taXQgMWEyMmVjNjQzNTgwNjI2ZjQzOWM4NTgzZWRhZmRjYzczNzk4ZjJmYgoJ QXV0aG9yOiBGZWxpcGUgQmFsYmkgPGZlbGlwZS5iYWxiaUBsaW51eC5pbnRlbC5jb20+CglEYXRl OiAgIFdlZCBBdWcgMSAxMzoxNTowNSAyMDE4ICswMzAwCgoJICAgIHVzYjogZHdjMzogZ2FkZ2V0 OiBjb21iaW5lIHVuYWxpZ25lZCBhbmQgemVybyBmbGFncwoKRG8gSSBuZWVkIHRvIHNlbmQgYSBz ZXBhcmF0ZSBwYXRjaCBmb3IgPD0gNC4yMCBvciB3aWxsIHlvdSBoYW5kbGUgaXQ/Ckl0J3Mgc3Ry YWlnaHRmb3J3YXJkIHJlYWxseSwgdGhlIGNvZGUgY2hhbmdlIHNob3VsZCBpbnN0ZWFkIGJlCgor CXJlcS0+dW5hbGlnbmVkID0gZmFsc2U7CisJcmVxLT56ZXJvID0gZmFsc2U7CgpUaGFua3MsCkph Y2sKCiBkcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MzL2dhZGdldC5jIGIvZHJp dmVycy91c2IvZHdjMy9nYWRnZXQuYwppbmRleCAyZWNkZTMwYWQwYjcuLmU5N2IxNGY0NDRjOCAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMy9nYWRnZXQuYworKysgYi9kcml2ZXJzL3VzYi9k d2MzL2dhZGdldC5jCkBAIC0xNzcsNiArMTc3LDcgQEAgc3RhdGljIHZvaWQgZHdjM19nYWRnZXRf ZGVsX2FuZF91bm1hcF9yZXF1ZXN0KHN0cnVjdCBkd2MzX2VwICpkZXAsCiAJcmVxLT5zdGFydGVk ID0gZmFsc2U7CiAJbGlzdF9kZWwoJnJlcS0+bGlzdCk7CiAJcmVxLT5yZW1haW5pbmcgPSAwOwor CXJlcS0+bmVlZHNfZXh0cmFfdHJiID0gZmFsc2U7CiAKIAlpZiAocmVxLT5yZXF1ZXN0LnN0YXR1 cyA9PSAtRUlOUFJPR1JFU1MpCiAJCXJlcS0+cmVxdWVzdC5zdGF0dXMgPSBzdGF0dXM7Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A2782C43444 for ; Thu, 10 Jan 2019 20:40:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 729F0213F2 for ; Thu, 10 Jan 2019 20:40:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="Xo7zfHVB"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="UVhDHMh0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730479AbfAJUkP (ORCPT ); Thu, 10 Jan 2019 15:40:15 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:41170 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730219AbfAJUkP (ORCPT ); Thu, 10 Jan 2019 15:40:15 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 5F7346055A; Thu, 10 Jan 2019 20:40:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1547152814; bh=xMnvTGCTdIG4CkZNAHo7OB4PW/yqZ15fzZRJSuiKI1k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Xo7zfHVBADe1TLeeyK5WjrI6z4PJwnmZN8dLNTifKKIB6JM3ZuFCCfDi+hSphDaDb mQSKP3czQ8PI9aMBqpNbFo+otKJkGpMfwNe12NTT1W5E6W0ds5cTbttspPuYjPnkpz AtVxU7y7r6bpCq/Z8a3QamWD47EIoqtcU3OK4iTo= Received: from jackp-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jackp@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 514C5601B4; Thu, 10 Jan 2019 20:40:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1547152813; bh=xMnvTGCTdIG4CkZNAHo7OB4PW/yqZ15fzZRJSuiKI1k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UVhDHMh02RAFxnvRqUET7CZg1FY1M+rm3YwpndchAkr7uhGDseuy4AdCahZ0Wso+R JzEYED6efi98zjhEkaj1KSYuJRoBdtFjVn3yhBrWBey+cneKBEnwiKM5OLEr/l3rvU SUv9LCBfndQRahMUCjmtLWAb0CO6RPLdJKgIaig8= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 514C5601B4 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jackp@codeaurora.org From: Jack Pham To: Felipe Balbi Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Jack Pham , stable@vger.kernel.org Subject: [PATCH v2] usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup Date: Thu, 10 Jan 2019 12:39:55 -0800 Message-Id: <20190110203955.10724-1-jackp@codeaurora.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <87pnt5c53o.fsf@linux.intel.com> References: <87pnt5c53o.fsf@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org OUT endpoint requests may somtimes have this flag set when preparing to be submitted to HW indicating that there is an additional TRB chained to the request for alignment purposes. If that request is removed before the controller can execute the transfer (e.g. ep_dequeue/ep_disable), the request will not go through the dwc3_gadget_ep_cleanup_completed_request() handler and will not have its needs_extra_trb flag cleared when dwc3_gadget_giveback() is called. This same request could be later requeued for a new transfer that does not require an extra TRB and if it is successfully completed, the cleanup and TRB reclamation will incorrectly process the additional TRB which belongs to the next request, and incorrectly advances the TRB dequeue pointer, thereby messing up calculation of the next requeust's actual/remaining count when it completes. The right thing to do here is to ensure that the flag is cleared before it is given back to the function driver. A good place to do that is in dwc3_gadget_del_and_unmap_request(). Fixes: c6267a51639b ("usb: dwc3: gadget: align transfers to wMaxPacketSize") Cc: stable@vger.kernel.org Signed-off-by: Jack Pham --- v2: Added Fixes tag and Cc: stable Felipe, as I mentioned in the cover for v1, for stable (from 4.11 where c6267a51639b first landed through 4.20), the fix needs to be modified to assign to the separate req->unaligned and req->zero flags in lieu of needs_extra_trb which appeared in 5.0-rc1 in: commit 1a22ec643580626f439c8583edafdcc73798f2fb Author: Felipe Balbi Date: Wed Aug 1 13:15:05 2018 +0300 usb: dwc3: gadget: combine unaligned and zero flags Do I need to send a separate patch for <= 4.20 or will you handle it? It's straightforward really, the code change should instead be + req->unaligned = false; + req->zero = false; Thanks, Jack drivers/usb/dwc3/gadget.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 2ecde30ad0b7..e97b14f444c8 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -177,6 +177,7 @@ static void dwc3_gadget_del_and_unmap_request(struct dwc3_ep *dep, req->started = false; list_del(&req->list); req->remaining = 0; + req->needs_extra_trb = false; if (req->request.status == -EINPROGRESS) req->request.status = status; -- The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project