From 88d9ead294e88d97d86d4c137d9c42920ca1fa2b Mon Sep 17 00:00:00 2001 From: wlf Date: Wed, 22 May 2013 17:33:38 +0800 Subject: [PATCH] USB: fix usb lock without unlock if req->queue is not empty --- drivers/usb/dwc_otg/dwc_otg_pcd.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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; } -- 2.34.1