diff --git a/drivers/usb/misc/uss720.c b/drivers/usb/misc/uss720.c index 1ce48f5832d7..f43fbb28044b 100644 --- a/drivers/usb/misc/uss720.c +++ b/drivers/usb/misc/uss720.c @@ -175,13 +175,15 @@ static struct uss720_async_request *submit_async_request(struct parport_uss720_p static unsigned int kill_all_async_requests_priv(struct parport_uss720_private *priv) { - struct uss720_async_request *rq; + struct uss720_async_request *rq, *tmp; unsigned long flags; unsigned int ret = 0; spin_lock_irqsave(&priv->asynclock, flags); - list_for_each_entry(rq, &priv->asynclist, asynclist) { - usb_unlink_urb(rq->urb); + list_for_each_entry_safe(rq, tmp, &priv->asynclist, asynclist) { + spin_unlock_irqrestore(&priv->asynclock, flags); + usb_kill_urb(rq->urb); + spin_lock_irqsave(&priv->asynclock, flags); ret++; } spin_unlock_irqrestore(&priv->asynclock, flags);