From: wlf Date: Wed, 22 May 2013 09:33:38 +0000 (+0800) Subject: USB: fix usb lock without unlock if req->queue is not empty X-Git-Tag: firefly_0821_release~7051 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=88d9ead294e88d97d86d4c137d9c42920ca1fa2b;p=firefly-linux-kernel-4.4.55.git USB: fix usb lock without unlock if req->queue is not empty --- diff --git a/drivers/usb/dwc_otg/dwc_otg_pcd.c b/drivers/usb/dwc_otg/dwc_otg_pcd.c index ba9516bc9c0e..a9b05d6ebea6 100755 --- a/drivers/usb/dwc_otg/dwc_otg_pcd.c +++ b/drivers/usb/dwc_otg/dwc_otg_pcd.c @@ -568,11 +568,14 @@ static int dwc_otg_pcd_ep_queue(struct usb_ep *_ep, /* 20091226,HSL@RK */ if ( !list_empty(&req->queue) ) { - while(!list_empty(&req->queue) ) { - ep = container_of(_ep, dwc_otg_pcd_ep_t, ep); - request_done(ep, req, -ECONNABORTED); - DWC_PRINT("%s::ep %s req not empty,done it error!\n" , __func__, _ep->name); - } + list_del_init(&req->queue); + ep = container_of(_ep, dwc_otg_pcd_ep_t, ep); + DWC_PRINT("%s::ep %s req not empty,done it error!\n" , __func__, _ep->name); + ep->pcd->vbus_status = 0; + if(ep->pcd->conn_status) + { + ep->pcd->conn_status = 0; + } return -EINVAL; }