Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit caa2a122 authored by Franck Bui-Huu's avatar Franck Bui-Huu Committed by Greg Kroah-Hartman
Browse files

[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: default avatarFranck Bui-Huu <vagabon.xyz@gmail.com>
Cc: David Brownell <david-b@pacbell.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent c8155cc5
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -802,7 +802,9 @@ static void ctrl_complete (struct urb *urb, struct pt_regs *regs)

				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: