Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp4472545ybz; Tue, 28 Apr 2020 11:53:17 -0700 (PDT) X-Google-Smtp-Source: APiQypKAkpp/h4UDg0mQvpJabrMQ5y2FH3JwZyVzx8N4/PZg3Zzm4mveluECD4dMBPEpzJlXUBLM X-Received: by 2002:a17:906:b217:: with SMTP id p23mr25059341ejz.136.1588099997435; Tue, 28 Apr 2020 11:53:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588099997; cv=none; d=google.com; s=arc-20160816; b=X6DgLBKmjRQM8FhgeCSr/IWRllru4n4c/IsSmJ9peIblJAxQe9b0dJ5oanvRerTSOx fcX8hjTBXDNcUWtSMt5IC9nBN3+TOGhLxcr4OcVRwfMnB++7rpI+JB6xC49SG0OPNHC8 RiP6ShZy3t25UL2BSIKvoZv2gCJPc0ffeI4OLbWzJx6S2w3/35Ksp/G5nE31JpT2xZCk c91ta0htVrjqeZ/5WMWqJGJDQMA1ePgjtof2yfpBr22gzJW6VyB4RmtKtcXIfCXdUXzW Jw07/5YMHTFotMfqK3C4IxsdpkTPoxF5T2/zAbkocF2DANQfE0A6+pdiRbE2RbDuRkXK A8gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=34B42OQXwkrQLSfeaOe6FWJFIMbq2i4SlrEU0JErEr8=; b=glYPmdwvxTuPNtEN/R8Lg7KQPkrWVaz3kOyQY8uduBonq4pplAI3s8r54W/tevnvdV BLkmED6NHncaFDokUpcvvXDW7cQVXabs0kWm+3OolCH+6/YS2d4SJdNGP6x6/CKJnTrj HU/iutdGzl+ie8MKCMBioyl+gQOw2B0VTcDWQcDzkLK4tUEu2W4+1v+WS8/gwQO3Pu75 s48mIqISEJDS2R6QYVAqJnwg9qhJHF9qjXHd/M+qJqllIhGogLsaAwIksvUCN9Fnoj3E s7o+597wTblkmTewx+spJ2iyixymDOCfMypEGAfoB4ZB59SgMjZYJKH7kYe9DYhI1L6d kuQA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LbolyCEY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id oz15si2504864ejb.24.2020.04.28.11.52.53; Tue, 28 Apr 2020 11:53:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LbolyCEY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729976AbgD1Shh (ORCPT + 99 others); Tue, 28 Apr 2020 14:37:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:55642 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730483AbgD1She (ORCPT ); Tue, 28 Apr 2020 14:37:34 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A4B3720B1F; Tue, 28 Apr 2020 18:37:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588099053; bh=cx53Q1txw0OXP9jC5QKoWUgPkLNbKKpXi65526FejRo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LbolyCEYc2QKGN40zfz4qG/mER2K8vFIX9QhcIhrRum3CCvGCf+uqcJC5yLh3prAg sAjlb92NheinsR19Kbga4vBx3Y3r49MeSBUDSwvw8Rj2V4kpIi/Vp9sP1VSnRLPOVi uRS3BmK9vQPosK2Y9UTFbUBRkQ2w3qtUN6LzEQFQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Thinh Nguyen , Felipe Balbi Subject: [PATCH 5.6 149/167] usb: dwc3: gadget: Fix request completion check Date: Tue, 28 Apr 2020 20:25:25 +0200 Message-Id: <20200428182244.412333708@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200428182225.451225420@linuxfoundation.org> References: <20200428182225.451225420@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thinh Nguyen commit 49e0590e3a60e75b493e5df879e216e5073c7663 upstream. A request may not be completed because not all the TRBs are prepared for it. This happens when we run out of available TRBs. When some TRBs are completed, the driver needs to prepare the rest of the TRBs for the request. The check dwc3_gadget_ep_request_completed() shouldn't be checking the amount of data received but rather the number of pending TRBs. Revise this request completion check. Cc: stable@vger.kernel.org Fixes: e0c42ce590fe ("usb: dwc3: gadget: simplify IOC handling") Signed-off-by: Thinh Nguyen Signed-off-by: Felipe Balbi Signed-off-by: Greg Kroah-Hartman --- drivers/usb/dwc3/gadget.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2484,14 +2484,7 @@ static int dwc3_gadget_ep_reclaim_trb_li static bool dwc3_gadget_ep_request_completed(struct dwc3_request *req) { - /* - * For OUT direction, host may send less than the setup - * length. Return true for all OUT requests. - */ - if (!req->direction) - return true; - - return req->request.actual == req->request.length; + return req->num_pending_sgs == 0; } static int dwc3_gadget_ep_cleanup_completed_request(struct dwc3_ep *dep, @@ -2515,8 +2508,7 @@ static int dwc3_gadget_ep_cleanup_comple req->request.actual = req->request.length - req->remaining; - if (!dwc3_gadget_ep_request_completed(req) || - req->num_pending_sgs) { + if (!dwc3_gadget_ep_request_completed(req)) { __dwc3_gadget_kick_transfer(dep); goto out; }