This is a minor cleanup that replaces a test for non-null urb->hcpriv
with "is the urb on this list".  HCDs don't need to use hcpriv in that
way, and in general this is a safer way to test that.  (AIO does much
the same thing in its kiocb cancelation paths.)

Please merge.

- Dave



--- 1.74/drivers/usb/core/hcd.c Fri Aug 29 11:16:13 2003
+++ edited/drivers/usb/core/hcd.c       Sun Dec  7 12:29:05 2003
@@ -1165,6 +1165,7 @@
        struct device                   *sys = 0;
        unsigned long                   flags;
        struct completion_splice        splice;
+       struct list_head                *tmp;
        int                             retval;
 
        if (!urb)
@@ -1203,7 +1204,12 @@
         */
        WARN_ON (!HCD_IS_RUNNING (hcd->state) && hcd->state != USB_STATE_HALT);
 
-       if (!urb->hcpriv) {
+       /* insist the urb is still queued */
+       list_for_each(tmp, &dev->urb_list) {
+               if (tmp == &urb->urb_list)
+                       break;
+       }
+       if (tmp != &urb->urb_list) {
                retval = -EINVAL;
                goto done;
}

Reply via email to