From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manu Gautam Subject: [PATCH] usb: dwc3: gadget: Fail request submission if it was already queued Date: Fri, 11 Jan 2019 11:32:12 +0530 Message-ID: <20190111060212.7390-1-mgautam@codeaurora.org> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: Sender: linux-kernel-owner@vger.kernel.org To: Felipe Balbi Cc: linux-arm-msm@vger.kernel.org, Manu Gautam , Greg Kroah-Hartman , "open list:DESIGNWARE USB3 DRD IP DRIVER" , open list List-Id: linux-arm-msm@vger.kernel.org If a function driver tries to re-submit an already queued request, it can results in corruption of pending/started request lists. Catch such conditions and fail the request submission to DCD. Signed-off-by: Manu Gautam --- drivers/usb/dwc3/gadget.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 679c12e14522..51716c6b286a 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1290,6 +1290,12 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) &req->request, req->dep->name)) return -EINVAL; + if (req->request.status == -EINPROGRESS) { + dev_err(dwc->dev, "%s: %pK request already in queue\n", + dep->name, req); + return -EBUSY; + } + pm_runtime_get(dwc->dev); req->request.actual = 0; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project