[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:
Franck Bui-Huu 2006-05-15 19:23:53 +02:00 committed by Greg Kroah-Hartman
parent c8155cc5d8
commit caa2a12267
1 changed files with 2 additions and 0 deletions

View File

@ -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: