Explanation:
bus_reset may sleep but must not allocate memory as
it is potentially in the block io path, hence GFP_NOIO not GFP_KERNEL

        Regards
                Oliver


--- scsiglue.c.alt      Tue Feb  5 01:24:42 2002
+++ scsiglue.c  Tue Feb  5 01:27:56 2002
@@ -278,7 +278,7 @@
        if (us->protocol == US_PR_CBI) {
                down(&(us->irq_urb_sem));
                us->irq_urb->dev = us->pusb_dev;
-               result = usb_submit_urb(us->irq_urb);
+               result = usb_submit_urb(us->irq_urb, GFP_NOIO);
                US_DEBUGP("usb_submit_urb() returns %d\n", result);
                up(&(us->irq_urb_sem));
        }
--- transport.c.alt     Tue Feb  5 01:24:54 2002
+++ transport.c Tue Feb  5 01:26:57 2002
@@ -414,7 +414,7 @@
        us->current_urb->transfer_flags = USB_ASYNC_UNLINK;
 
        /* submit the URB */
-       status = usb_submit_urb(us->current_urb);
+       status = usb_submit_urb(us->current_urb, GFP_NOIO);
        if (status) {
                /* something went wrong */
                up(&(us->current_urb_sem));
@@ -461,7 +461,7 @@
        us->current_urb->transfer_flags = USB_ASYNC_UNLINK;
 
        /* submit the URB */
-       status = usb_submit_urb(us->current_urb);
+       status = usb_submit_urb(us->current_urb, GFP_NOIO);
        if (status) {
                /* something went wrong */
                up(&(us->current_urb_sem));
--- usb.c.alt   Tue Feb  5 01:25:02 2002
+++ usb.c       Tue Feb  5 01:25:50 2002
@@ -534,7 +534,7 @@
                     usb_stor_CBI_irq, ss, ss->ep_int->bInterval); 
 
        /* submit the URB for processing */
-       result = usb_submit_urb(ss->irq_urb);
+       result = usb_submit_urb(ss->irq_urb, GFP_KERNEL);
        US_DEBUGP("usb_submit_urb() returns %d\n", result);
        if (result) {
                usb_free_urb(ss->irq_urb);

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to