* Kevin Hilman <khilman@xxxxxxxxxx> [080220 20:02]: > If a hard IRQ occurs during the soft IRQ TX processing, a recursive > spinlock BUG can occur. > > Prevent this by interrupt-off locking around usb_hcd_link_urb_to_ep() > > Found while testing bluetooth A2DP audio over USB. > > Signed-off-by: Kevin Hilman <khilman@xxxxxxxxxx> > --- > drivers/usb/musb/musb_host.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c > index 2ad2ed9..82e1265 100644 > --- a/drivers/usb/musb/musb_host.c > +++ b/drivers/usb/musb/musb_host.c > @@ -1757,7 +1757,9 @@ static int musb_urb_enqueue( > if (!is_host_active(musb) || !musb->is_active) > return -ENODEV; > > + spin_lock_irqsave(&musb->lock, flags); > ret = usb_hcd_link_urb_to_ep(hcd, urb); > + spin_unlock_irqrestore(&musb->lock, flags); > if (ret) > return ret; > Pushing today. Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html