Merge "usb: f_qdss: Avoid wait_for_completion if qdss_disable is called"
This commit is contained in:
commit
8c5c90559a
@ -901,16 +901,20 @@ void usb_qdss_close(struct usb_qdss_ch *ch)
|
||||
qdss_log("channel:%s\n", ch->name);
|
||||
qdss = ch->priv_usb;
|
||||
qdss->qdss_close = true;
|
||||
spin_lock(&qdss->lock);
|
||||
while (!list_empty(&qdss->queued_data_pool)) {
|
||||
qreq = list_first_entry(&qdss->queued_data_pool,
|
||||
struct qdss_req, list);
|
||||
spin_unlock(&qdss->lock);
|
||||
spin_unlock_irqrestore(&channel_lock, flags);
|
||||
qdss_log("dequeue req:%pK\n", qreq->usb_req);
|
||||
usb_ep_dequeue(qdss->port.data, qreq->usb_req);
|
||||
wait_for_completion(&qreq->write_done);
|
||||
if (!usb_ep_dequeue(qdss->port.data, qreq->usb_req))
|
||||
wait_for_completion(&qreq->write_done);
|
||||
spin_lock_irqsave(&channel_lock, flags);
|
||||
spin_lock(&qdss->lock);
|
||||
}
|
||||
|
||||
spin_unlock(&qdss->lock);
|
||||
spin_unlock_irqrestore(&channel_lock, flags);
|
||||
usb_qdss_free_req(ch);
|
||||
spin_lock_irqsave(&channel_lock, flags);
|
||||
|
Loading…
Reference in New Issue
Block a user