Patchwork USB: UDC: net22{80,72}: remove mistaken test of req->zero

login
register
mail settings
Submitter Alan Stern
Date April 15, 2019, 5:35 p.m.
Message ID <Pine.LNX.4.44L0.1904151333280.1575-100000@iolanthe.rowland.org>
Download mbox | patch
Permalink /patch/773539/
State New
Headers show

Comments

Alan Stern - April 15, 2019, 5:35 p.m.
The net2280 UDC driver (and also net2272, probably via copy-and-paste)
incorrectly checks the req->zero flag during OUT transfers, after
copying data from the UDC's FIFO into memory.  This makes no sense at
all; the "zero" flag indicates that an extra zero-length packet should
be appended to an IN transfer if the length is an even multiple of the
maxpacket size.  It has nothing to do with OUT transfers.

In practice this doesn't cause any problems because gadget drivers
never set req->zero for OUT transfers anyway.  Still, it is an error
and unnecessary code, so this patch removes the check.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>

---


[as1887]


 drivers/usb/gadget/udc/net2272.c |    3 +--
 drivers/usb/gadget/udc/net2280.c |    3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

Patch

Index: usb-devel/drivers/usb/gadget/udc/net2280.c
===================================================================
--- usb-devel.orig/drivers/usb/gadget/udc/net2280.c
+++ usb-devel/drivers/usb/gadget/udc/net2280.c
@@ -789,8 +789,7 @@  static int read_fifo(struct net2280_ep *
 		(void) readl(&ep->regs->ep_rsp);
 	}
 
-	return is_short || ((req->req.actual == req->req.length) &&
-			!req->req.zero);
+	return is_short || req->req.actual == req->req.length;
 }
 
 /* fill out dma descriptor to match a given request */
Index: usb-devel/drivers/usb/gadget/udc/net2272.c
===================================================================
--- usb-devel.orig/drivers/usb/gadget/udc/net2272.c
+++ usb-devel/drivers/usb/gadget/udc/net2272.c
@@ -573,8 +573,7 @@  net2272_read_fifo(struct net2272_ep *ep,
 
 		/* completion */
 		if (unlikely(cleanup || is_short ||
-				((req->req.actual == req->req.length)
-				 && !req->req.zero))) {
+				req->req.actual == req->req.length)) {
 
 			if (cleanup) {
 				net2272_out_flush(ep);