I guess this patch have been missed so I resend it as 2 rc more and still not applied or rejected. Begin forwarded message:
Date: Tue, 11 Nov 2003 00:00:26 +0100 From: "fee mail" <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: Re: [linux-usb-devel] oops with usb-uhci module here it is in diff -u old new format On Mon, 10 Nov 2003 14:51:30 -0800 "David Brownell" <[EMAIL PROTECTED]> wrote: > diff -u old new -- jeanseb I know it look like I'm insane Take a closer look I'm not to blame. If love is blind I guess I'll buy myself a cane (slash / axl rose )
--- usb-uhci.c.orig Mon Nov 10 23:37:44 2003 +++ usb-uhci.c Mon Nov 10 16:28:50 2003 @@ -795,7 +795,7 @@ list_add (&qh->desc_list, &urb_priv->desc_list); - queue_urb (s, urb); // queue before inserting in desc chain + queue_urb_unlocked (s, urb); // queue before inserting in desc chain qh->hw.qh.element &= cpu_to_le32(~UHCI_PTR_TERM); @@ -1351,7 +1351,7 @@ int ret=-1; unsigned long flags; - spin_lock_irqsave (&s->urb_list_lock, flags); + /* spin_lock_irqsave (&s->urb_list_lock, flags);*/ p=s->urb_list.prev; for (; p != &s->urb_list; p = p->prev) { @@ -1370,7 +1370,7 @@ ret=0; } - spin_unlock_irqrestore(&s->urb_list_lock, flags); + /* spin_unlock_irqrestore(&s->urb_list_lock, flags);*/ return ret; } @@ -1486,7 +1486,7 @@ fill_td (td, status, info, urb_priv->transfer_buffer_dma); list_add_tail (&td->desc_list, &urb_priv->desc_list); - queue_urb (s, urb); + queue_urb_unlocked (s, urb); insert_td_horizontal (s, s->int_chain[nint], td); // store in INT-TDs @@ -1567,7 +1567,7 @@ if (n == last) { status |= TD_CTRL_IOC; - queue_urb (s, urb); + queue_urb_unlocked (s, urb); } fill_td (td, status, destination | (((urb->iso_frame_desc[n].length - 1) & 0x7ff) << 21), @@ -1709,7 +1709,6 @@ spin_unlock_irqrestore (&s->urb_list_lock, flags); } else { - spin_unlock_irqrestore (&s->urb_list_lock, flags); switch (type) { case PIPE_ISOCHRONOUS: if (urb->bandwidth == 0) { /* not yet checked/allocated */ @@ -1750,6 +1749,7 @@ default: ret = -EINVAL; } + spin_unlock_irqrestore (&s->urb_list_lock, flags); } dbg("submit_urb: scheduled with ret: %d", ret);