diff options
| -rw-r--r-- | drivers/usb/gadget/udc/net2280.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c index 16e7d2db6411..051d024b369e 100644 --- a/drivers/usb/gadget/udc/net2280.c +++ b/drivers/usb/gadget/udc/net2280.c @@ -1240,7 +1240,8 @@ static void nuke(struct net2280_ep *ep)  static int net2280_dequeue(struct usb_ep *_ep, struct usb_request *_req)  {  	struct net2280_ep	*ep; -	struct net2280_request	*req; +	struct net2280_request	*req = NULL; +	struct net2280_request	*iter;  	unsigned long		flags;  	u32			dmactl;  	int			stopped; @@ -1266,11 +1267,13 @@ static int net2280_dequeue(struct usb_ep *_ep, struct usb_request *_req)  	}  	/* make sure it's still queued on this endpoint */ -	list_for_each_entry(req, &ep->queue, queue) { -		if (&req->req == _req) -			break; +	list_for_each_entry(iter, &ep->queue, queue) { +		if (&iter->req != _req) +			continue; +		req = iter; +		break;  	} -	if (&req->req != _req) { +	if (!req) {  		ep->stopped = stopped;  		spin_unlock_irqrestore(&ep->dev->lock, flags);  		ep_dbg(ep->dev, "%s: Request mismatch\n", __func__); | 
