[PATCH] Fix a deadlock in usbtest
ctrl_complete functions acquires ctx->lock and tries to unlink all queued urbs in case of errors through usb_unlink_urb func. In its turn usb_unlink_urb calls, through the hcd driver, usb_hcd_giveback_urb which calls ctrl_complete again. At this time, ctx->lock is already taken by the same function. Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com> Cc: David Brownell <david-b@pacbell.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
c8155cc5d8
commit
caa2a12267
|
@ -802,7 +802,9 @@ error:
|
|||
|
||||
if (u == urb || !u->dev)
|
||||
continue;
|
||||
spin_unlock(&ctx->lock);
|
||||
status = usb_unlink_urb (u);
|
||||
spin_lock(&ctx->lock);
|
||||
switch (status) {
|
||||
case -EINPROGRESS:
|
||||
case -EBUSY:
|
||||
|
|
Loading…
Reference in New Issue