| From 7495312d4ef02993f111639c9399274c8fb1a26e Mon Sep 17 00:00:00 2001 |
| From: Thinh Nguyen <Thinh.Nguyen@synopsys.com> |
| Date: Fri, 13 Dec 2019 18:40:45 -0800 |
| Subject: [PATCH] usb: dwc3: gadget: Fix request complete check |
| |
| commit ea0d762775e20aaff7909a3f0866ff1688b1c618 upstream. |
| |
| We can only check for IN direction if the request had completed. For OUT |
| direction, it's perfectly fine that the host can send less than the |
| setup length. Let's return true fall all cases of OUT direction. |
| |
| Fixes: e0c42ce590fe ("usb: dwc3: gadget: simplify IOC handling") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Thinh Nguyen <thinhn@synopsys.com> |
| Link: https://lore.kernel.org/r/ac5a3593a94fdaa3d92e6352356b5f7a01ccdc7c.1576291140.git.thinhn@synopsys.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c |
| index 9239b117751d..1acf67452811 100644 |
| --- a/drivers/usb/dwc3/gadget.c |
| +++ b/drivers/usb/dwc3/gadget.c |
| @@ -2429,6 +2429,13 @@ static int dwc3_gadget_ep_reclaim_trb_linear(struct dwc3_ep *dep, |
| |
| 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; |
| } |
| |
| -- |
| 2.7.4 |
| |