Now usb_alloc_urb() has a second paramater, mem_flags.

Thanks to Oliver for the majority of this patch.

I've included all 5 patches in one message.  They are split up on my
kernel.org directory if you only want to grab one of them.

On Wed, Feb 13, 2002 at 05:55:30PM -0800, Greg KH wrote:
> [EMAIL PROTECTED], 2002-02-13 17:34:58-08:00, [EMAIL PROTECTED]
>   Added mem_flags to usb_submit_urb(), this is the USB core code changes.
> 
>  drivers/usb/hub.c   |    2 +-
>  drivers/usb/usb.c   |    9 +++++----
>  include/linux/usb.h |    2 +-
>  3 files changed, 7 insertions(+), 6 deletions(-)
> 
> ------
> [EMAIL PROTECTED], 2002-02-13 17:36:19-08:00, [EMAIL PROTECTED]
>   Added mem_flags to usb_submit_urb().
>   This modifies the drivers in drivers/usb.
>   Patch done by Oliver Neukum.
> 
>  drivers/usb/CDCEther.c     |    6 +++---
>  drivers/usb/audio.c        |   16 ++++++++--------
>  drivers/usb/auerswald.c    |    6 +++---
>  drivers/usb/bluetooth.c    |    8 ++++----
>  drivers/usb/catc.c         |    8 ++++----
>  drivers/usb/dabusb.c       |    2 +-
>  drivers/usb/devio.c        |    2 +-
>  drivers/usb/hid-core.c     |    6 +++---
>  drivers/usb/hpusbscsi.c    |    4 ++--
>  drivers/usb/kaweth.c       |    8 ++++----
>  drivers/usb/konicawc.c     |    2 +-
>  drivers/usb/mdc800.c       |    6 +++---
>  drivers/usb/microtek.c     |    2 +-
>  drivers/usb/ov511.c        |    2 +-
>  drivers/usb/pegasus.c      |    8 ++++----
>  drivers/usb/pwc-if.c       |    2 +-
>  drivers/usb/scanner.c      |    2 +-
>  drivers/usb/se401.c        |    4 ++--
>  drivers/usb/stv680.c       |    2 +-
>  drivers/usb/usb-skeleton.c |    3 ++-
>  drivers/usb/usbkbd.c       |    4 ++--
>  drivers/usb/usbmouse.c     |    2 +-
>  drivers/usb/usbnet.c       |    6 +++---
>  drivers/usb/usbvideo.c     |    2 +-
>  drivers/usb/vicam.c        |    2 +-
>  drivers/usb/wacom.c        |    2 +-
>  26 files changed, 59 insertions(+), 58 deletions(-)
> 
> ------
> [EMAIL PROTECTED], 2002-02-13 17:37:10-08:00, [EMAIL PROTECTED]
>   added mem_flags to usb_submit_urb().
>   This fixes the drivers in drivers/usb/serial.
>   Patch done by Oliver Neukum.
> 
>  drivers/usb/serial/empeg.c       |    2 +-
>  drivers/usb/serial/io_edgeport.c |    4 ++--
>  drivers/usb/serial/keyspan.c     |    2 +-
>  drivers/usb/serial/kl5kusb105.c  |    2 +-
>  drivers/usb/serial/usbserial.c   |    6 +++---
>  drivers/usb/serial/visor.c       |    2 +-
>  6 files changed, 9 insertions(+), 9 deletions(-)
> 
> ------
> [EMAIL PROTECTED], 2002-02-13 17:38:41-08:00, [EMAIL PROTECTED]
>   added mem_flags to usb_submit_urb().
>   Fixes drivers/usb/storage.
>   Patch done by Oliver Neukum.
> 
>  drivers/usb/storage/usb.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> ------
> [EMAIL PROTECTED], 2002-02-13 17:39:56-08:00, [EMAIL PROTECTED]
>   mem_flags added to usb_submit_urb().
>   This fixes usb drivers outside of the drivers/usb directory.
> 
>  drivers/bluetooth/hci_usb.c     |    8 ++++----
>  drivers/input/joystick/iforce.c |    6 +++---
>  drivers/isdn/hisax/st5481_usb.c |    6 +++---
>  drivers/media/video/cpia_usb.c  |    4 ++--
>  4 files changed, 12 insertions(+), 12 deletions(-)


# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.334   -> 1.335  
#        include/linux/usb.h    1.20    -> 1.21   
#          drivers/usb/hub.c    1.15    -> 1.16   
#          drivers/usb/usb.c    1.31    -> 1.32   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/13      [EMAIL PROTECTED]  1.335
# Added mem_flags to usb_submit_urb(), this is the USB core code changes.
# --------------------------------------------
#
diff -Nru a/drivers/usb/hub.c b/drivers/usb/hub.c
--- a/drivers/usb/hub.c Wed Feb 13 17:51:13 2002
+++ b/drivers/usb/hub.c Wed Feb 13 17:51:13 2002
@@ -303,7 +303,7 @@
        if (maxp > sizeof(hub->buffer))
                maxp = sizeof(hub->buffer);
 
-       hub->urb = usb_alloc_urb(0);
+       hub->urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!hub->urb) {
                err("couldn't allocate interrupt urb");
                kfree(hub->descriptor);
diff -Nru a/drivers/usb/usb.c b/drivers/usb/usb.c
--- a/drivers/usb/usb.c Wed Feb 13 17:51:13 2002
+++ b/drivers/usb/usb.c Wed Feb 13 17:51:13 2002
@@ -1085,6 +1085,7 @@
 /**
  * usb_alloc_urb - creates a new urb for a USB driver to use
  * @iso_packets: number of iso packets for this urb
+ * @mem_flags: the type of memory to allocate, see kmalloc() for a list of valid 
+options for this.
  *
  * Creates an urb for the USB driver to use, initializes a few internal
  * structures, incrementes the usage counter, and returns a pointer to it.
@@ -1096,13 +1097,13 @@
  *
  * The driver must call usb_free_urb() when it is finished with the urb.
  */
-struct urb *usb_alloc_urb(int iso_packets)
+struct urb *usb_alloc_urb(int iso_packets, int mem_flags)
 {
        struct urb *urb;
 
        urb = (struct urb *)kmalloc(sizeof(struct urb) + 
                iso_packets * sizeof(struct usb_iso_packet_descriptor),
-               in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
+               mem_flags);
        if (!urb) {
                err("alloc_urb: kmalloc failed");
                return NULL;
@@ -1368,7 +1369,7 @@
        int retv;
        int length;
 
-       urb = usb_alloc_urb(0);
+       urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!urb)
                return -ENOMEM;
   
@@ -1456,7 +1457,7 @@
        if (len < 0)
                return -EINVAL;
 
-       urb=usb_alloc_urb(0);
+       urb=usb_alloc_urb(0, GFP_KERNEL);
        if (!urb)
                return -ENOMEM;
 
diff -Nru a/include/linux/usb.h b/include/linux/usb.h
--- a/include/linux/usb.h       Wed Feb 13 17:51:13 2002
+++ b/include/linux/usb.h       Wed Feb 13 17:51:13 2002
@@ -856,7 +856,7 @@
 #define 
FILL_INT_URB(URB,DEV,PIPE,TRANSFER_BUFFER,BUFFER_LENGTH,COMPLETE,CONTEXT,INTERVAL) \
     
usb_fill_int_urb(URB,DEV,PIPE,TRANSFER_BUFFER,BUFFER_LENGTH,COMPLETE,CONTEXT,INTERVAL)
 
-extern struct urb *usb_alloc_urb(int iso_packets);
+extern struct urb *usb_alloc_urb(int iso_packets, int mem_flags);
 extern void usb_free_urb(struct urb *urb);
 #define usb_put_urb usb_free_urb
 extern struct urb *usb_get_urb(struct urb *urb);



# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.335   -> 1.336  
#       drivers/usb/konicawc.c  1.1     -> 1.2    
#       drivers/usb/mdc800.c    1.11    -> 1.12   
#       drivers/usb/usbnet.c    1.14    -> 1.15   
#       drivers/usb/dabusb.c    1.10    -> 1.11   
#       drivers/usb/CDCEther.c  1.7     -> 1.8    
#        drivers/usb/wacom.c    1.9     -> 1.10   
#       drivers/usb/stv680.c    1.6     -> 1.7    
#       drivers/usb/bluetooth.c 1.17    -> 1.18   
#       drivers/usb/scanner.c   1.14    -> 1.15   
#        drivers/usb/se401.c    1.8     -> 1.9    
#        drivers/usb/ov511.c    1.14    -> 1.15   
#        drivers/usb/vicam.c    1.7     -> 1.8    
#       drivers/usb/usbmouse.c  1.9     -> 1.10   
#       drivers/usb/auerswald.c 1.6     -> 1.7    
#       drivers/usb/usbkbd.c    1.11    -> 1.12   
#        drivers/usb/audio.c    1.12    -> 1.13   
#       drivers/usb/pegasus.c   1.16    -> 1.17   
#       drivers/usb/usb-skeleton.c      1.7     -> 1.8    
#         drivers/usb/catc.c    1.8     -> 1.9    
#       drivers/usb/usbvideo.c  1.7     -> 1.8    
#        drivers/usb/devio.c    1.17    -> 1.18   
#       drivers/usb/microtek.c  1.13    -> 1.14   
#       drivers/usb/hid-core.c  1.13    -> 1.14   
#       drivers/usb/kaweth.c    1.13    -> 1.14   
#       drivers/usb/pwc-if.c    1.12    -> 1.13   
#       drivers/usb/hpusbscsi.c 1.8     -> 1.9    
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/13      [EMAIL PROTECTED]  1.336
# Added mem_flags to usb_submit_urb().
# This modifies the drivers in drivers/usb.
# Patch done by Oliver Neukum.
# --------------------------------------------
#
diff -Nru a/drivers/usb/CDCEther.c b/drivers/usb/CDCEther.c
--- a/drivers/usb/CDCEther.c    Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/CDCEther.c    Wed Feb 13 17:51:18 2002
@@ -1144,18 +1144,18 @@
        // Zero everything out.
        memset(ether_dev, 0, sizeof(ether_dev_t));
 
-       ether_dev->rx_urb = usb_alloc_urb(0);
+       ether_dev->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!ether_dev->rx_urb) {
                kfree(ether_dev);
                return NULL;
        }
-       ether_dev->tx_urb = usb_alloc_urb(0);
+       ether_dev->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!ether_dev->tx_urb) {
                usb_free_urb(ether_dev->rx_urb);
                kfree(ether_dev);
                return NULL;
        }
-       ether_dev->intr_urb = usb_alloc_urb(0);
+       ether_dev->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!ether_dev->intr_urb) {
                usb_free_urb(ether_dev->tx_urb);
                usb_free_urb(ether_dev->rx_urb);
diff -Nru a/drivers/usb/audio.c b/drivers/usb/audio.c
--- a/drivers/usb/audio.c       Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/audio.c       Wed Feb 13 17:51:19 2002
@@ -2829,14 +2829,14 @@
        init_waitqueue_head(&as->usbin.dma.wait);
        init_waitqueue_head(&as->usbout.dma.wait);
        spin_lock_init(&as->lock);
-       as->usbin.durb[0].urb = usb_alloc_urb(0);
-       as->usbin.durb[1].urb = usb_alloc_urb(0);
-       as->usbin.surb[0].urb = usb_alloc_urb(0);
-       as->usbin.surb[1].urb = usb_alloc_urb(0);
-       as->usbout.durb[0].urb = usb_alloc_urb(0);
-       as->usbout.durb[1].urb = usb_alloc_urb(0);
-       as->usbout.surb[0].urb = usb_alloc_urb(0);
-       as->usbout.surb[1].urb = usb_alloc_urb(0);
+       as->usbin.durb[0].urb = usb_alloc_urb(0, GFP_KERNEL);
+       as->usbin.durb[1].urb = usb_alloc_urb(0, GFP_KERNEL);
+       as->usbin.surb[0].urb = usb_alloc_urb(0, GFP_KERNEL);
+       as->usbin.surb[1].urb = usb_alloc_urb(0, GFP_KERNEL);
+       as->usbout.durb[0].urb = usb_alloc_urb(0, GFP_KERNEL);
+       as->usbout.durb[1].urb = usb_alloc_urb(0, GFP_KERNEL);
+       as->usbout.surb[0].urb = usb_alloc_urb(0, GFP_KERNEL);
+       as->usbout.surb[1].urb = usb_alloc_urb(0, GFP_KERNEL);
        if ((!as->usbin.durb[0].urb) ||
            (!as->usbin.durb[1].urb) ||
            (!as->usbin.surb[0].urb) ||
diff -Nru a/drivers/usb/auerswald.c b/drivers/usb/auerswald.c
--- a/drivers/usb/auerswald.c   Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/auerswald.c   Wed Feb 13 17:51:18 2002
@@ -699,7 +699,7 @@
         dr = kmalloc (sizeof (struct usb_ctrlrequest), GFP_KERNEL);
        if (!dr)
                return -ENOMEM;
-       urb = usb_alloc_urb (0);
+       urb = usb_alloc_urb (0, GFP_KERNEL);
        if (!urb) {
                kfree (dr);
                return -ENOMEM;
@@ -802,7 +802,7 @@
                 if (!bep->bufp) goto bl_fail;
                 bep->dr = (struct usb_ctrlrequest *) kmalloc (sizeof (struct 
usb_ctrlrequest), GFP_KERNEL);
                 if (!bep->dr) goto bl_fail;
-                bep->urbp = usb_alloc_urb (0);
+                bep->urbp = usb_alloc_urb (0, GFP_KERNEL);
                 if (!bep->urbp) goto bl_fail;
                 list_add_tail (&bep->buff_list, &bcp->free_buff_list);
         }
@@ -1130,7 +1130,7 @@
 
        /* allocate the urb and data buffer */
         if (!cp->inturbp) {
-                cp->inturbp = usb_alloc_urb (0);
+                cp->inturbp = usb_alloc_urb (0, GFP_KERNEL);
                 if (!cp->inturbp) {
                         ret = -ENOMEM;
                         goto intoend;
diff -Nru a/drivers/usb/bluetooth.c b/drivers/usb/bluetooth.c
--- a/drivers/usb/bluetooth.c   Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/bluetooth.c   Wed Feb 13 17:51:18 2002
@@ -1123,7 +1123,7 @@
        
        /* create our control out urb pool */ 
        for (i = 0; i < NUM_CONTROL_URBS; ++i) {
-               struct urb  *urb = usb_alloc_urb(0);
+               struct urb  *urb = usb_alloc_urb(0, GFP_KERNEL);
                if (urb == NULL) {
                        err("No free urbs available");
                        goto probe_error;
@@ -1134,7 +1134,7 @@
 
        /* set up the endpoint information */
        endpoint = bulk_in_endpoint[0];
-       bluetooth->read_urb = usb_alloc_urb (0);
+       bluetooth->read_urb = usb_alloc_urb (0, GFP_KERNEL);
        if (!bluetooth->read_urb) {
                err("No free urbs available");
                goto probe_error;
@@ -1154,7 +1154,7 @@
        
        /* create our write urb pool */ 
        for (i = 0; i < NUM_BULK_URBS; ++i) {
-               struct urb  *urb = usb_alloc_urb(0);
+               struct urb  *urb = usb_alloc_urb(0, GFP_KERNEL);
                if (urb == NULL) {
                        err("No free urbs available");
                        goto probe_error;
@@ -1170,7 +1170,7 @@
        bluetooth->bulk_out_buffer_size = endpoint->wMaxPacketSize * 2;
 
        endpoint = interrupt_in_endpoint[0];
-       bluetooth->interrupt_in_urb = usb_alloc_urb(0);
+       bluetooth->interrupt_in_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!bluetooth->interrupt_in_urb) {
                err("No free urbs available");
                goto probe_error;
diff -Nru a/drivers/usb/catc.c b/drivers/usb/catc.c
--- a/drivers/usb/catc.c        Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/catc.c        Wed Feb 13 17:51:19 2002
@@ -694,10 +694,10 @@
        catc->timer.data = (long) catc;
        catc->timer.function = catc_stats_timer;
 
-       catc->ctrl_urb = usb_alloc_urb(0);
-       catc->tx_urb = usb_alloc_urb(0);
-       catc->rx_urb = usb_alloc_urb(0);
-       catc->irq_urb = usb_alloc_urb(0);
+       catc->ctrl_urb = usb_alloc_urb(0, GFP_KERNEL);
+       catc->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
+       catc->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
+       catc->irq_urb = usb_alloc_urb(0, GFP_KERNEL);
        if ((!catc->ctrl_urb) || (!catc->tx_urb) || 
            (!catc->rx_urb) || (!catc->irq_urb)) {
                err("No free urbs available.");
diff -Nru a/drivers/usb/dabusb.c b/drivers/usb/dabusb.c
--- a/drivers/usb/dabusb.c      Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/dabusb.c      Wed Feb 13 17:51:18 2002
@@ -226,7 +226,7 @@
                }
                memset (b, 0, sizeof (buff_t));
                b->s = s;
-               b->purb = usb_alloc_urb(packets);
+               b->purb = usb_alloc_urb(packets, GFP_KERNEL);
                if (!b->purb) {
                        err("usb_alloc_urb == NULL");
                        kfree (b);
diff -Nru a/drivers/usb/devio.c b/drivers/usb/devio.c
--- a/drivers/usb/devio.c       Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/devio.c       Wed Feb 13 17:51:19 2002
@@ -181,7 +181,7 @@
         if (!as)
                 return NULL;
         memset(as, 0, assize);
-       as->urb = usb_alloc_urb(numisoframes);
+       as->urb = usb_alloc_urb(numisoframes, GFP_KERNEL);
        if (!as->urb) {
                kfree(as);
                return NULL;
diff -Nru a/drivers/usb/hid-core.c b/drivers/usb/hid-core.c
--- a/drivers/usb/hid-core.c    Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/hid-core.c    Wed Feb 13 17:51:19 2002
@@ -1311,14 +1311,14 @@
                if (endpoint->bEndpointAddress & USB_DIR_IN) {
                        if (hid->urbin)
                                continue;
-                       if (!(hid->urbin = usb_alloc_urb(0)))
+                       if (!(hid->urbin = usb_alloc_urb(0, GFP_KERNEL)))
                                goto fail;
                        pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress);
                        FILL_INT_URB(hid->urbin, dev, pipe, hid->inbuf, 0, hid_irq_in, 
hid, endpoint->bInterval);
                } else {
                        if (hid->urbout)
                                continue;
-                       if (!(hid->urbout = usb_alloc_urb(0)))
+                       if (!(hid->urbout = usb_alloc_urb(0, GFP_KERNEL)))
                                goto fail;
                        pipe = usb_sndbulkpipe(dev, endpoint->bEndpointAddress);
                        FILL_BULK_URB(hid->urbout, dev, pipe, hid->outbuf, 0, 
hid_irq_out, hid);
@@ -1360,7 +1360,7 @@
 
        kfree(buf);
 
-       hid->urbctrl = usb_alloc_urb(0);
+       hid->urbctrl = usb_alloc_urb(0, GFP_KERNEL);
        FILL_CONTROL_URB(hid->urbctrl, dev, 0, (void*) &hid->cr, hid->ctrlbuf, 1, 
hid_ctrl, hid);
 
        return hid;
diff -Nru a/drivers/usb/hpusbscsi.c b/drivers/usb/hpusbscsi.c
--- a/drivers/usb/hpusbscsi.c   Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/hpusbscsi.c   Wed Feb 13 17:51:19 2002
@@ -56,12 +56,12 @@
                return NULL;
        DEBUG ("Allocated memory\n");
        memset (new, 0, sizeof (struct hpusbscsi));
-       new->dataurb = usb_alloc_urb(0);
+       new->dataurb = usb_alloc_urb(0, GFP_KERNEL);
        if (!new->dataurb) {
                kfree (new);
                return NULL;
        }
-       new->controlurb = usb_alloc_urb(0);
+       new->controlurb = usb_alloc_urb(0, GFP_KERNEL);
        if (!new->controlurb) {
                usb_free_urb (new->dataurb);
                kfree (new);
diff -Nru a/drivers/usb/kaweth.c b/drivers/usb/kaweth.c
--- a/drivers/usb/kaweth.c      Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/kaweth.c      Wed Feb 13 17:51:19 2002
@@ -873,8 +873,8 @@
        
        kaweth_dbg("Initializing net device.");
 
-       kaweth->tx_urb = usb_alloc_urb(0);
-       kaweth->rx_urb = usb_alloc_urb(0);
+       kaweth->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
+       kaweth->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
 
        kaweth->net = init_etherdev(0, 0);
        if (!kaweth->net) {
@@ -977,7 +977,7 @@
         set_current_state(TASK_INTERRUPTIBLE);
         add_wait_queue(&awd.wqh, &wait);
         urb->context = &awd;
-        status = usb_submit_urb(urb, GFP_KERNEL);
+        status = usb_submit_urb(urb, GFP_ATOMIC);
         if (status) {
                 // something went wrong
                 usb_free_urb(urb);
@@ -1020,7 +1020,7 @@
         int retv;
         int length;
 
-        urb = usb_alloc_urb(0);
+        urb = usb_alloc_urb(0, GFP_KERNEL);
         if (!urb)
                 return -ENOMEM;
 
diff -Nru a/drivers/usb/konicawc.c b/drivers/usb/konicawc.c
--- a/drivers/usb/konicawc.c    Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/konicawc.c    Wed Feb 13 17:51:18 2002
@@ -629,7 +629,7 @@
                /* Here uvd is a fully allocated uvd_t object */
 
                for(i = 0; i < USBVIDEO_NUMSBUF; i++) {
-                       konicawc_data->sts_urb[i] = usb_alloc_urb(FRAMES_PER_DESC);
+                       konicawc_data->sts_urb[i] = usb_alloc_urb(FRAMES_PER_DESC, 
+GFP_KERNEL);
                }
 
                switch(size) {
diff -Nru a/drivers/usb/mdc800.c b/drivers/usb/mdc800.c
--- a/drivers/usb/mdc800.c      Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/mdc800.c      Wed Feb 13 17:51:18 2002
@@ -969,9 +969,9 @@
        try (mdc800->write_urb_buffer=kmalloc (8, GFP_KERNEL));
        try (mdc800->download_urb_buffer=kmalloc (64, GFP_KERNEL));
 
-       try (mdc800->irq_urb=usb_alloc_urb (0));
-       try (mdc800->download_urb=usb_alloc_urb (0));
-       try (mdc800->write_urb=usb_alloc_urb (0));
+       try (mdc800->irq_urb=usb_alloc_urb (0, GFP_KERNEL));
+       try (mdc800->download_urb=usb_alloc_urb (0, GFP_KERNEL));
+       try (mdc800->write_urb=usb_alloc_urb (0, GFP_KERNEL));
 
        /* Register the driver */
        if (usb_register (&mdc800_usb_driver) < 0)
diff -Nru a/drivers/usb/microtek.c b/drivers/usb/microtek.c
--- a/drivers/usb/microtek.c    Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/microtek.c    Wed Feb 13 17:51:19 2002
@@ -936,7 +936,7 @@
        }
 
        memset( new_desc, 0, sizeof(*new_desc) );
-       new_desc->urb = usb_alloc_urb(0);
+       new_desc->urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!new_desc->urb) {
                kfree(new_desc);
                return NULL;
diff -Nru a/drivers/usb/ov511.c b/drivers/usb/ov511.c
--- a/drivers/usb/ov511.c       Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/ov511.c       Wed Feb 13 17:51:18 2002
@@ -4426,7 +4426,7 @@
        }
 
        for (n = 0; n < OV511_NUMSBUF; n++) {
-               urb = usb_alloc_urb(FRAMES_PER_DESC);
+               urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL);
        
                if (!urb) {
                        err("init isoc: usb_alloc_urb ret. NULL");
diff -Nru a/drivers/usb/pegasus.c b/drivers/usb/pegasus.c
--- a/drivers/usb/pegasus.c     Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/pegasus.c     Wed Feb 13 17:51:19 2002
@@ -858,25 +858,25 @@
        pegasus->dev_index = dev_index;
        init_waitqueue_head( &pegasus->ctrl_wait );
 
-       pegasus->ctrl_urb = usb_alloc_urb(0);
+       pegasus->ctrl_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!pegasus->ctrl_urb) {
                kfree (pegasus);
                return NULL;
        }
-       pegasus->rx_urb = usb_alloc_urb(0);
+       pegasus->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!pegasus->rx_urb) {
                usb_free_urb (pegasus->ctrl_urb);
                kfree (pegasus);
                return NULL;
        }
-       pegasus->tx_urb = usb_alloc_urb(0);
+       pegasus->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!pegasus->tx_urb) {
                usb_free_urb (pegasus->rx_urb);
                usb_free_urb (pegasus->ctrl_urb);
                kfree (pegasus);
                return NULL;
        }
-       pegasus->intr_urb = usb_alloc_urb(0);
+       pegasus->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!pegasus->intr_urb) {
                usb_free_urb (pegasus->tx_urb);
                usb_free_urb (pegasus->rx_urb);
diff -Nru a/drivers/usb/pwc-if.c b/drivers/usb/pwc-if.c
--- a/drivers/usb/pwc-if.c      Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/pwc-if.c      Wed Feb 13 17:51:19 2002
@@ -827,7 +827,7 @@
 
        ret = 0;
        for (i = 0; i < MAX_ISO_BUFS; i++) {
-               urb = usb_alloc_urb(ISO_FRAMES_PER_DESC);
+               urb = usb_alloc_urb(ISO_FRAMES_PER_DESC, GFP_KERNEL);
                if (urb == NULL) {
                        Err("Failed to allocate urb %d\n", i);
                        ret = -ENOMEM;
diff -Nru a/drivers/usb/scanner.c b/drivers/usb/scanner.c
--- a/drivers/usb/scanner.c     Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/scanner.c     Wed Feb 13 17:51:18 2002
@@ -974,7 +974,7 @@
        }
        memset (scn, 0, sizeof(struct scn_usb_data));
 
-       scn->scn_irq = usb_alloc_urb(0);
+       scn->scn_irq = usb_alloc_urb(0, GFP_KERNEL);
        if (!scn->scn_irq) {
                kfree(scn);
                up(&scn_mutex);
diff -Nru a/drivers/usb/se401.c b/drivers/usb/se401.c
--- a/drivers/usb/se401.c       Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/se401.c       Wed Feb 13 17:51:18 2002
@@ -644,7 +644,7 @@
        }
 
        for (i=0; i<SE401_NUMSBUF; i++) {
-               urb=usb_alloc_urb(0);
+               urb=usb_alloc_urb(0, GFP_KERNEL);
                if(!urb)
                        return ENOMEM;
 
@@ -1465,7 +1465,7 @@
        se401->readcount=0;
 
        /* Start interrupt transfers for snapshot button */
-       se401->inturb=usb_alloc_urb(0);
+       se401->inturb=usb_alloc_urb(0, GFP_KERNEL);
        if (!se401->inturb) {
                info("Allocation of inturb failed");
                return 1;
diff -Nru a/drivers/usb/stv680.c b/drivers/usb/stv680.c
--- a/drivers/usb/stv680.c      Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/stv680.c      Wed Feb 13 17:51:18 2002
@@ -804,7 +804,7 @@
        }
 
        for (i = 0; i < STV680_NUMSBUF; i++) {
-               urb = usb_alloc_urb (0);
+               urb = usb_alloc_urb (0, GFP_KERNEL);
                if (!urb)
                        return ENOMEM;
 
diff -Nru a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c
--- a/drivers/usb/usb-skeleton.c        Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/usb-skeleton.c        Wed Feb 13 17:51:19 2002
@@ -573,7 +573,8 @@
                if (((endpoint->bEndpointAddress & 0x80) == 0x00) &&
                    ((endpoint->bmAttributes & 3) == 0x02)) {
                        /* we found a bulk out endpoint */
-                       dev->write_urb = usb_alloc_urb(0);
+                       /* a probe() may sleep and has no restrictions on memory 
+allocations */
+                       dev->write_urb = usb_alloc_urb(0, GFP_KERNEL);
                        if (!dev->write_urb) {
                                err("No free urbs available");
                                goto error;
diff -Nru a/drivers/usb/usbkbd.c b/drivers/usb/usbkbd.c
--- a/drivers/usb/usbkbd.c      Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/usbkbd.c      Wed Feb 13 17:51:19 2002
@@ -196,12 +196,12 @@
        if (!(kbd = kmalloc(sizeof(struct usb_kbd), GFP_KERNEL))) return NULL;
        memset(kbd, 0, sizeof(struct usb_kbd));
 
-       kbd->irq = usb_alloc_urb(0);
+       kbd->irq = usb_alloc_urb(0, GFP_KERNEL);
        if (!kbd->irq) {
                kfree(kbd);
                return NULL;
        }
-       kbd->led = usb_alloc_urb(0);
+       kbd->led = usb_alloc_urb(0, GFP_KERNEL);
        if (!kbd->led) {
                usb_free_urb(kbd->irq);
                kfree(kbd);
diff -Nru a/drivers/usb/usbmouse.c b/drivers/usb/usbmouse.c
--- a/drivers/usb/usbmouse.c    Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/usbmouse.c    Wed Feb 13 17:51:18 2002
@@ -122,7 +122,7 @@
        if (!(mouse = kmalloc(sizeof(struct usb_mouse), GFP_KERNEL))) return NULL;
        memset(mouse, 0, sizeof(struct usb_mouse));
 
-       mouse->irq = usb_alloc_urb(0);
+       mouse->irq = usb_alloc_urb(0, GFP_KERNEL);
        if (!mouse->irq) {
                kfree(mouse);
                return NULL;
diff -Nru a/drivers/usb/usbnet.c b/drivers/usb/usbnet.c
--- a/drivers/usb/usbnet.c      Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/usbnet.c      Wed Feb 13 17:51:18 2002
@@ -420,7 +420,7 @@
        }
 
        // allocate irq urb
-       if ((priv->irq_urb = usb_alloc_urb (0)) == 0) {
+       if ((priv->irq_urb = usb_alloc_urb (0, GFP_KERNEL)) == 0) {
                dbg ("%s: cannot allocate private irq urb per device",
                        dev->net.name);
                kfree (priv);
@@ -1589,7 +1589,7 @@
                }
        }
 
-       if (!(urb = usb_alloc_urb (0))) {
+       if (!(urb = usb_alloc_urb (0, GFP_ATOMIC))) {
                dbg ("no urb");
                goto drop;
        }
@@ -1723,7 +1723,7 @@
                        struct urb      *urb;
                        int             i;
                        for (i = 0; i < 3 && dev->rxq.qlen < RX_QLEN; i++) {
-                               if ((urb = usb_alloc_urb (0)) != 0)
+                               if ((urb = usb_alloc_urb (0, GFP_ATOMIC)) != 0)
                                        rx_submit (dev, urb, GFP_ATOMIC);
                        }
                        if (temp != dev->rxq.qlen)
diff -Nru a/drivers/usb/usbvideo.c b/drivers/usb/usbvideo.c
--- a/drivers/usb/usbvideo.c    Wed Feb 13 17:51:19 2002
+++ b/drivers/usb/usbvideo.c    Wed Feb 13 17:51:19 2002
@@ -1077,7 +1077,7 @@
 
        down(&uvd->lock);
        for (i=0; i < USBVIDEO_NUMSBUF; i++) {
-               uvd->sbuf[i].urb = usb_alloc_urb(FRAMES_PER_DESC);
+               uvd->sbuf[i].urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL);
                if (uvd->sbuf[i].urb == NULL) {
                        err("usb_alloc_urb(%d.) failed.", FRAMES_PER_DESC);
                        uvd->uvd_used = 0;
diff -Nru a/drivers/usb/vicam.c b/drivers/usb/vicam.c
--- a/drivers/usb/vicam.c       Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/vicam.c       Wed Feb 13 17:51:18 2002
@@ -884,7 +884,7 @@
        }
        memset(vicam, 0, sizeof(*vicam));
 
-       vicam->readurb = usb_alloc_urb(0);
+       vicam->readurb = usb_alloc_urb(0, GFP_KERNEL);
        if (!vicam->readurb) {
                kfree(vicam);
                return NULL;
diff -Nru a/drivers/usb/wacom.c b/drivers/usb/wacom.c
--- a/drivers/usb/wacom.c       Wed Feb 13 17:51:18 2002
+++ b/drivers/usb/wacom.c       Wed Feb 13 17:51:18 2002
@@ -359,7 +359,7 @@
        if (!(wacom = kmalloc(sizeof(struct wacom), GFP_KERNEL))) return NULL;
        memset(wacom, 0, sizeof(struct wacom));
 
-       wacom->irq = usb_alloc_urb(0);
+       wacom->irq = usb_alloc_urb(0, GFP_KERNEL);
        if (!wacom->irq) {
                kfree(wacom);
                return NULL;




# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.336   -> 1.337  
#       drivers/usb/serial/kl5kusb105.c 1.2     -> 1.3    
#       drivers/usb/serial/io_edgeport.c        1.22    -> 1.23   
#       drivers/usb/serial/keyspan.c    1.20    -> 1.21   
#       drivers/usb/serial/visor.c      1.22    -> 1.23   
#       drivers/usb/serial/usbserial.c  1.23    -> 1.24   
#       drivers/usb/serial/empeg.c      1.19    -> 1.20   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/13      [EMAIL PROTECTED]  1.337
# added mem_flags to usb_submit_urb().
# This fixes the drivers in drivers/usb/serial.
# Patch done by Oliver Neukum.
# --------------------------------------------
#
diff -Nru a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c
--- a/drivers/usb/serial/empeg.c        Wed Feb 13 17:51:23 2002
+++ b/drivers/usb/serial/empeg.c        Wed Feb 13 17:51:23 2002
@@ -607,7 +607,7 @@
        /* create our write urb pool and transfer buffers */ 
        spin_lock_init (&write_urb_pool_lock);
        for (i = 0; i < NUM_URBS; ++i) {
-               urb = usb_alloc_urb(0);
+               urb = usb_alloc_urb(0, GFP_KERNEL);
                write_urb_pool[i] = urb;
                if (urb == NULL) {
                        err("No more urbs???");
diff -Nru a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
--- a/drivers/usb/serial/io_edgeport.c  Wed Feb 13 17:51:23 2002
+++ b/drivers/usb/serial/io_edgeport.c  Wed Feb 13 17:51:23 2002
@@ -1091,7 +1091,7 @@
                }
 
                /* Allocate a URB for the write */
-               edge_port->write_urb = usb_alloc_urb (0);
+               edge_port->write_urb = usb_alloc_urb (0, GFP_KERNEL);
 
                if (!edge_port->write_urb) {
                        dbg(__FUNCTION__" - no memory");
@@ -2462,7 +2462,7 @@
        usb_serial_debug_data (__FILE__, __FUNCTION__, length, buffer);
 
        /* Allocate our next urb */
-       urb = usb_alloc_urb (0);
+       urb = usb_alloc_urb (0, GFP_KERNEL);
        if (!urb)
                return -ENOMEM;
 
diff -Nru a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
--- a/drivers/usb/serial/keyspan.c      Wed Feb 13 17:51:23 2002
+++ b/drivers/usb/serial/keyspan.c      Wed Feb 13 17:51:23 2002
@@ -1051,7 +1051,7 @@
                return NULL;            /* endpoint not needed */
 
        dbg (__FUNCTION__ " alloc for endpoint %d.\n", endpoint);
-       urb = usb_alloc_urb(0);         /* No ISO */
+       urb = usb_alloc_urb(0, GFP_KERNEL);             /* No ISO */
        if (urb == NULL) {
                dbg (__FUNCTION__ " alloc for endpoint %d failed.\n", endpoint);
                return NULL;
diff -Nru a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c
--- a/drivers/usb/serial/kl5kusb105.c   Wed Feb 13 17:51:23 2002
+++ b/drivers/usb/serial/kl5kusb105.c   Wed Feb 13 17:51:23 2002
@@ -280,7 +280,7 @@
 
                spin_lock_init (&priv->write_urb_pool_lock);
                for (i=0; i<NUM_URBS; i++) {
-                       struct urb* urb = usb_alloc_urb(0);
+                       struct urb* urb = usb_alloc_urb(0, GFP_KERNEL);
 
                        priv->write_urb_pool[i] = urb;
                        if (urb == NULL) {
diff -Nru a/drivers/usb/serial/usbserial.c b/drivers/usb/serial/usbserial.c
--- a/drivers/usb/serial/usbserial.c    Wed Feb 13 17:51:23 2002
+++ b/drivers/usb/serial/usbserial.c    Wed Feb 13 17:51:23 2002
@@ -1203,7 +1203,7 @@
        for (i = 0; i < num_bulk_in; ++i) {
                endpoint = bulk_in_endpoint[i];
                port = &serial->port[i];
-               port->read_urb = usb_alloc_urb (0);
+               port->read_urb = usb_alloc_urb (0, GFP_KERNEL);
                if (!port->read_urb) {
                        err("No free urbs available");
                        goto probe_error;
@@ -1228,7 +1228,7 @@
        for (i = 0; i < num_bulk_out; ++i) {
                endpoint = bulk_out_endpoint[i];
                port = &serial->port[i];
-               port->write_urb = usb_alloc_urb(0);
+               port->write_urb = usb_alloc_urb(0, GFP_KERNEL);
                if (!port->write_urb) {
                        err("No free urbs available");
                        goto probe_error;
@@ -1254,7 +1254,7 @@
        for (i = 0; i < num_interrupt_in; ++i) {
                endpoint = interrupt_in_endpoint[i];
                port = &serial->port[i];
-               port->interrupt_in_urb = usb_alloc_urb(0);
+               port->interrupt_in_urb = usb_alloc_urb(0, GFP_KERNEL);
                if (!port->interrupt_in_urb) {
                        err("No free urbs available");
                        goto probe_error;
diff -Nru a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
--- a/drivers/usb/serial/visor.c        Wed Feb 13 17:51:23 2002
+++ b/drivers/usb/serial/visor.c        Wed Feb 13 17:51:23 2002
@@ -787,7 +787,7 @@
        /* create our write urb pool and transfer buffers */ 
        spin_lock_init (&write_urb_pool_lock);
        for (i = 0; i < NUM_URBS; ++i) {
-               urb = usb_alloc_urb(0);
+               urb = usb_alloc_urb(0, GFP_KERNEL);
                write_urb_pool[i] = urb;
                if (urb == NULL) {
                        err("No more urbs???");




# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.337   -> 1.338  
#       drivers/usb/storage/usb.c       1.13    -> 1.14   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/13      [EMAIL PROTECTED]  1.338
# added mem_flags to usb_submit_urb().
# Fixes drivers/usb/storage.
# Patch done by Oliver Neukum.
# --------------------------------------------
#
diff -Nru a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
--- a/drivers/usb/storage/usb.c Wed Feb 13 17:51:28 2002
+++ b/drivers/usb/storage/usb.c Wed Feb 13 17:51:28 2002
@@ -515,7 +515,7 @@
        down(&(ss->irq_urb_sem));
 
        /* allocate the URB */
-       ss->irq_urb = usb_alloc_urb(0);
+       ss->irq_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!ss->irq_urb) {
                up(&(ss->irq_urb_sem));
                US_DEBUGP("couldn't allocate interrupt URB");
@@ -730,7 +730,7 @@
                }
 
                /* allocate the URB we're going to use */
-               ss->current_urb = usb_alloc_urb(0);
+               ss->current_urb = usb_alloc_urb(0, GFP_KERNEL);
                if (!ss->current_urb) {
                        usb_dec_dev_use(dev);
                        return NULL;
@@ -756,7 +756,7 @@
                memset(ss, 0, sizeof(struct us_data));
 
                /* allocate the URB we're going to use */
-               ss->current_urb = usb_alloc_urb(0);
+               ss->current_urb = usb_alloc_urb(0, GFP_KERNEL);
                if (!ss->current_urb) {
                        kfree(ss);
                        usb_dec_dev_use(dev);




# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.338   -> 1.339  
#       drivers/media/video/cpia_usb.c  1.6     -> 1.7    
#       drivers/input/joystick/iforce.c 1.9     -> 1.10   
#       drivers/bluetooth/hci_usb.c     1.5     -> 1.6    
#       drivers/isdn/hisax/st5481_usb.c 1.8     -> 1.9    
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/13      [EMAIL PROTECTED]  1.339
# mem_flags added to usb_submit_urb().
# This fixes usb drivers outside of the drivers/usb directory.
# --------------------------------------------
#
diff -Nru a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c
--- a/drivers/bluetooth/hci_usb.c       Wed Feb 13 17:51:33 2002
+++ b/drivers/bluetooth/hci_usb.c       Wed Feb 13 17:51:33 2002
@@ -547,17 +547,17 @@
        husb->udev = udev;
        husb->bulk_out_ep_addr = bulk_out_ep->bEndpointAddress;
 
-       if (!(husb->ctrl_urb = usb_alloc_urb(0))) {
+       if (!(husb->ctrl_urb = usb_alloc_urb(0, GFP_KERNEL))) {
                ERR("Can't allocate: control URB");
                goto probe_error;
        }
 
-       if (!(husb->write_urb = usb_alloc_urb(0))) {
+       if (!(husb->write_urb = usb_alloc_urb(0, GFP_KERNEL))) {
                ERR("Can't allocate: write URB");
                goto probe_error;
        }
 
-       if (!(husb->read_urb = usb_alloc_urb(0))) {
+       if (!(husb->read_urb = usb_alloc_urb(0, GFP_KERNEL))) {
                ERR("Can't allocate: read URB");
                goto probe_error;
        }
@@ -578,7 +578,7 @@
        pipe = usb_rcvintpipe(udev, ep->bEndpointAddress);
        size = usb_maxpacket(udev, pipe, usb_pipeout(pipe));
 
-       if (!(husb->intr_urb = usb_alloc_urb(0))) {
+       if (!(husb->intr_urb = usb_alloc_urb(0, GFP_KERNEL))) {
                ERR("Can't allocate: interrupt URB");
                goto probe_error;
        }
diff -Nru a/drivers/input/joystick/iforce.c b/drivers/input/joystick/iforce.c
--- a/drivers/input/joystick/iforce.c   Wed Feb 13 17:51:33 2002
+++ b/drivers/input/joystick/iforce.c   Wed Feb 13 17:51:33 2002
@@ -1024,18 +1024,18 @@
        if (!(iforce = kmalloc(sizeof(struct iforce) + 32, GFP_KERNEL))) return NULL;
        memset(iforce, 0, sizeof(struct iforce));
 
-       iforce->irq = usb_alloc_urb(0);
+       iforce->irq = usb_alloc_urb(0, GFP_KERNEL);
        if (!iforce->irq) {
                kfree(iforce);
                return NULL;
        }
-       iforce->out = usb_alloc_urb(0);
+       iforce->out = usb_alloc_urb(0, GFP_KERNEL);
        if (!iforce->out) {
                usb_free_urb(iforce->irq);
                kfree(iforce);
                return NULL;
        }
-       iforce->ctrl = usb_alloc_urb(0);
+       iforce->ctrl = usb_alloc_urb(0, GFP_KERNEL);
        if (!iforce->ctrl) {
                usb_free_urb(iforce->out);
                usb_free_urb(iforce->irq);
diff -Nru a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c
--- a/drivers/isdn/hisax/st5481_usb.c   Wed Feb 13 17:51:33 2002
+++ b/drivers/isdn/hisax/st5481_usb.c   Wed Feb 13 17:51:33 2002
@@ -265,7 +265,7 @@
        }
 
        // Allocate URB for control endpoint
-       urb = usb_alloc_urb(0);
+       urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!urb) {
                return -ENOMEM;
        }
@@ -280,7 +280,7 @@
        fifo_init(&ctrl->msg_fifo.f, ARRAY_SIZE(ctrl->msg_fifo.data));
 
        // Allocate URBs and buffers for interrupt endpoint
-       urb = usb_alloc_urb(0);
+       urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!urb) { 
                return -ENOMEM;
        }
@@ -416,7 +416,7 @@
 
        for (j = 0; j < 2; j++) {
                retval = -ENOMEM;
-               urb[j] = usb_alloc_urb(num_packets);
+               urb[j] = usb_alloc_urb(num_packet, GFP_KERNEL);
                if (!urb[j])
                        goto err;
 
diff -Nru a/drivers/media/video/cpia_usb.c b/drivers/media/video/cpia_usb.c
--- a/drivers/media/video/cpia_usb.c    Wed Feb 13 17:51:33 2002
+++ b/drivers/media/video/cpia_usb.c    Wed Feb 13 17:51:33 2002
@@ -201,7 +201,7 @@
        ucpia->workbuff = ucpia->buffers[1];
 
        /* We double buffer the Iso lists */
-       urb = usb_alloc_urb(FRAMES_PER_DESC);
+       urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL);
        if (!urb) {
                printk(KERN_ERR "cpia_init_isoc: usb_alloc_urb 0\n");
                retval = -ENOMEM;
@@ -222,7 +222,7 @@
                urb->iso_frame_desc[fx].length = FRAME_SIZE_PER_DESC;
        }
 
-       urb = usb_alloc_urb(FRAMES_PER_DESC);
+       urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL);
        if (!urb) {
                printk(KERN_ERR "cpia_init_isoc: usb_alloc_urb 1\n");
                retval = -ENOMEM;

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

Reply via email to