diff options
Diffstat (limited to 'drivers/usb/cdns3/cdns3-gadget.c')
| -rw-r--r-- | drivers/usb/cdns3/cdns3-gadget.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/usb/cdns3/cdns3-gadget.c b/drivers/usb/cdns3/cdns3-gadget.c index aeca902ab6cc..fd1beb10bba7 100644 --- a/drivers/usb/cdns3/cdns3-gadget.c +++ b/drivers/usb/cdns3/cdns3-gadget.c @@ -828,7 +828,11 @@ void cdns3_gadget_giveback(struct cdns3_endpoint *priv_ep,  			return;  	} -	if (request->complete) { +	/* +	 * zlp request is appended by driver, needn't call usb_gadget_giveback_request() to notify +	 * gadget composite driver. +	 */ +	if (request->complete && request->buf != priv_dev->zlp_buf) {  		spin_unlock(&priv_dev->lock);  		usb_gadget_giveback_request(&priv_ep->endpoint,  					    request); @@ -2540,11 +2544,11 @@ static int cdns3_gadget_ep_disable(struct usb_ep *ep)  	while (!list_empty(&priv_ep->wa2_descmiss_req_list)) {  		priv_req = cdns3_next_priv_request(&priv_ep->wa2_descmiss_req_list); +		list_del_init(&priv_req->list);  		kfree(priv_req->request.buf);  		cdns3_gadget_ep_free_request(&priv_ep->endpoint,  					     &priv_req->request); -		list_del_init(&priv_req->list);  		--priv_ep->wa2_counter;  	}  | 
