ChangeSet 1.894, 2002/12/18 00:18:53-08:00, [EMAIL PROTECTED]

[PATCH] ehci, more small fixes

- some access to urb->hcpriv and urb->status needed to be
   locked using urb->lock
- paranoia: don't depend on two values being in lock-step.


diff -Nru a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
--- a/drivers/usb/host/ehci-q.c Wed Dec 18 00:34:00 2002
+++ b/drivers/usb/host/ehci-q.c Wed Dec 18 00:34:00 2002
@@ -180,9 +180,10 @@
                        hcd_to_bus (&ehci->hcd)->bandwidth_int_reqs--;
                }
                qh_put (ehci, qh);
-               urb->hcpriv = 0;
        }
 
+       spin_lock (&urb->lock);
+       urb->hcpriv = 0;
        switch (urb->status) {
        case -EINPROGRESS:              /* success */
                urb->status = 0;
@@ -199,6 +200,7 @@
                COUNT (ehci->stats.unlink);
                break;
        }
+       spin_unlock (&urb->lock);
 
        /* complete() can reenter this HCD */
        spin_unlock (&ehci->lock);
@@ -686,7 +688,7 @@
        head = ehci->async;
        if (ehci->async_idle)
                del_timer (&ehci->watchdog);
-       else if (!head->qh_next.qh) {
+       if (!head->qh_next.qh) {
                u32     cmd = readl (&ehci->regs->command);
 
                if (!(cmd & CMD_ASE)) {


-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility 
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to