diff -Nru a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c --- a/drivers/bluetooth/hci_usb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/bluetooth/hci_usb.c Mon Feb 4 22:08:35 2002 @@ -120,11 +120,11 @@ DBG("%s", hdev->name); husb->read_urb->dev = husb->udev; - if ((status = usb_submit_urb(husb->read_urb))) + if ((status = usb_submit_urb(husb->read_urb, GFP_KERNEL))) DBG("read submit failed. %d", status); husb->intr_urb->dev = husb->udev; - if ((status = usb_submit_urb(husb->intr_urb))) + if ((status = usb_submit_urb(husb->intr_urb, GFP_KERNEL))) DBG("interrupt submit failed. %d", status); hdev->flags |= HCI_RUNNING; @@ -428,7 +428,7 @@ resubmit: husb->read_urb->dev = husb->udev; - if ((status = usb_submit_urb(husb->read_urb))) + if ((status = usb_submit_urb(husb->read_urb, GFP_KERNEL))) DBG("%s read URB submit failed %d", husb->hdev.name, status); DBG("%s read URB re-submited", husb->hdev.name); @@ -453,7 +453,7 @@ FILL_CONTROL_URB(urb, husb->udev, pipe, (void*)dr, skb->data, skb->len, hci_usb_ctrl, skb); - if ((status = usb_submit_urb(urb))) { + if ((status = usb_submit_urb(urb, GFP_KERNEL))) { DBG("%s control URB submit failed %d", husb->hdev.name, status); return status; } @@ -474,7 +474,7 @@ hci_usb_bulk_write, skb); urb->transfer_flags |= USB_QUEUE_BULK; - if ((status = usb_submit_urb(urb))) { + if ((status = usb_submit_urb(urb, GFP_KERNEL))) { DBG("%s write URB submit failed %d", husb->hdev.name, status); return status; } diff -Nru a/drivers/char/joystick/iforce.c b/drivers/char/joystick/iforce.c --- a/drivers/char/joystick/iforce.c Mon Feb 4 22:08:35 2002 +++ b/drivers/char/joystick/iforce.c Mon Feb 4 22:08:35 2002 @@ -204,7 +204,7 @@ set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&iforce->wait, &wait); - if (usb_submit_urb(iforce->out)) { + if (usb_submit_urb(iforce->out, GFP_KERNEL)) { set_current_state(TASK_RUNNING); remove_wait_queue(&iforce->wait, &wait); return; @@ -289,7 +289,7 @@ set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&iforce->wait, &wait); - if (usb_submit_urb(iforce->ctrl)) { + if (usb_submit_urb(iforce->ctrl, GFP_KERNEL)) { set_current_state(TASK_RUNNING); remove_wait_queue(&iforce->wait, &wait); return -1; @@ -345,7 +345,7 @@ if (iforce->open++) break; iforce->irq->dev = iforce->usbdev; - if (usb_submit_urb(iforce->irq)) + if (usb_submit_urb(iforce->irq, GFP_KERNEL)) return -EIO; break; #endif diff -Nru a/drivers/isdn/hisax/st5481.h b/drivers/isdn/hisax/st5481.h --- a/drivers/isdn/hisax/st5481.h Mon Feb 4 22:08:35 2002 +++ b/drivers/isdn/hisax/st5481.h Mon Feb 4 22:08:35 2002 @@ -409,10 +409,10 @@ * Submit an URB with error reporting. This is a macro so * the __FUNCTION__ returns the caller function name. */ -#define SUBMIT_URB(urb) \ +#define SUBMIT_URB(urb, mem_flags) \ ({ \ int status; \ - if ((status = usb_submit_urb(urb)) < 0) { \ + if ((status = usb_submit_urb(urb, mem_flags)) < 0) { \ WARN("usb_submit_urb failed,status=%d", status); \ } \ status; \ diff -Nru a/drivers/isdn/hisax/st5481_b.c b/drivers/isdn/hisax/st5481_b.c --- a/drivers/isdn/hisax/st5481_b.c Mon Feb 4 22:08:35 2002 +++ b/drivers/isdn/hisax/st5481_b.c Mon Feb 4 22:08:35 2002 @@ -115,7 +115,7 @@ DBG_ISO_PACKET(0x200,urb); - SUBMIT_URB(urb); + SUBMIT_URB(urb, GFP_KERNEL); } /* diff -Nru a/drivers/isdn/hisax/st5481_d.c b/drivers/isdn/hisax/st5481_d.c --- a/drivers/isdn/hisax/st5481_d.c Mon Feb 4 22:08:35 2002 +++ b/drivers/isdn/hisax/st5481_d.c Mon Feb 4 22:08:35 2002 @@ -356,10 +356,10 @@ DBG_ISO_PACKET(0x20,urb); - if (usb_submit_urb(urb) < 0) { + if (usb_submit_urb(urb, GFP_KERNEL) < 0) { // There is another URB queued up urb->transfer_flags = USB_ISO_ASAP; - SUBMIT_URB(urb); + SUBMIT_URB(urb, GFP_KERNEL); } } @@ -450,7 +450,7 @@ urb->transfer_flags = USB_ISO_ASAP; DBG_ISO_PACKET(0x20,urb); - SUBMIT_URB(urb); + SUBMIT_URB(urb, GFP_KERNEL); } static void dout_short_fifo(struct FsmInst *fsm, int event, void *arg) diff -Nru a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c --- a/drivers/isdn/hisax/st5481_usb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/isdn/hisax/st5481_usb.c Mon Feb 4 22:08:35 2002 @@ -48,7 +48,7 @@ // Prepare the URB urb->dev = adapter->usb_dev; - SUBMIT_URB(urb); + SUBMIT_URB(urb, GFP_KERNEL); } /* @@ -357,7 +357,7 @@ adapter->leds = RED_LED; // Start receiving on the interrupt endpoint - SUBMIT_URB(intr->urb); + SUBMIT_URB(intr->urb, GFP_KERNEL); while ((request = init_cmd_table[i++])) { value = init_cmd_table[i++]; @@ -517,7 +517,7 @@ urb->dev = in->adapter->usb_dev; urb->actual_length = 0; - SUBMIT_URB(urb); + SUBMIT_URB(urb, GFP_KERNEL); } int __devinit st5481_setup_in(struct st5481_in *in) @@ -603,10 +603,10 @@ DBG(4,""); in->urb[0]->dev = adapter->usb_dev; - SUBMIT_URB(in->urb[0]); + SUBMIT_URB(in->urb[0], GFP_KERNEL); in->urb[1]->dev = adapter->usb_dev; - SUBMIT_URB(in->urb[1]); + SUBMIT_URB(in->urb[1], GFP_KERNEL); } void st5481_in_mode(struct st5481_in *in, int mode) diff -Nru a/drivers/media/video/cpia_usb.c b/drivers/media/video/cpia_usb.c --- a/drivers/media/video/cpia_usb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/media/video/cpia_usb.c Mon Feb 4 22:08:35 2002 @@ -246,13 +246,13 @@ ucpia->sbuf[1].urb->next = ucpia->sbuf[0].urb; ucpia->sbuf[0].urb->next = ucpia->sbuf[1].urb; - err = usb_submit_urb(ucpia->sbuf[0].urb); + err = usb_submit_urb(ucpia->sbuf[0].urb, GFP_KERNEL); if (err) { printk(KERN_ERR "cpia_init_isoc: usb_submit_urb 0 ret %d\n", err); goto error_urb1; } - err = usb_submit_urb(ucpia->sbuf[1].urb); + err = usb_submit_urb(ucpia->sbuf[1].urb, GFP_KERNEL); if (err) { printk(KERN_ERR "cpia_init_isoc: usb_submit_urb 1 ret %d\n", err); diff -Nru a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c --- a/drivers/net/irda/irda-usb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/net/irda/irda-usb.c Mon Feb 4 22:08:35 2002 @@ -278,7 +278,7 @@ urb->transfer_flags = USB_QUEUE_BULK | USB_ASYNC_UNLINK; urb->timeout = MSECS_TO_JIFFIES(100); - if ((ret = usb_submit_urb(urb))) { + if ((ret = usb_submit_urb(urb, GFP_KERNEL))) { WARNING(__FUNCTION__ "(), failed Speed URB\n"); } spin_unlock_irqrestore(&self->lock, flags); @@ -451,7 +451,7 @@ } /* Ask USB to send the packet */ - if ((res = usb_submit_urb(urb))) { + if ((res = usb_submit_urb(urb, GFP_KERNEL))) { WARNING(__FUNCTION__ "(), failed Tx URB\n"); self->stats.tx_errors++; /* Let USB recover : We will catch that in the watchdog */ @@ -730,7 +730,7 @@ urb->status = 0; urb->next = NULL; /* Don't auto resubmit URBs */ - ret = usb_submit_urb(urb); + ret = usb_submit_urb(urb, GFP_KERNEL); if (ret) { /* If this ever happen, we are in deep s***. * Basically, the Rx path will stop... */ diff -Nru a/drivers/usb/CDCEther.c b/drivers/usb/CDCEther.c --- a/drivers/usb/CDCEther.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/CDCEther.c Mon Feb 4 22:08:35 2002 @@ -132,7 +132,7 @@ // Give this to the USB subsystem so it can tell us // when more data arrives. - if ( (res = usb_submit_urb(ether_dev->rx_urb)) ) { + if ( (res = usb_submit_urb(ether_dev->rx_urb, GFP_KERNEL)) ) { warn( __FUNCTION__ " failed submint rx_urb %d", res); } @@ -302,7 +302,7 @@ ether_dev->tx_urb->transfer_buffer_length = count; // Send the URB on its merry way. - if ((res = usb_submit_urb(ether_dev->tx_urb))) { + if ((res = usb_submit_urb(ether_dev->tx_urb, GFP_KERNEL))) { // Hmm... It didn't go. Tell someone... warn("failed tx_urb %d", res); // update some stats... @@ -350,7 +350,7 @@ read_bulk_callback, ether_dev ); // Put it out there so the device can send us stuff - if ( (res = usb_submit_urb(ether_dev->rx_urb)) ) + if ( (res = usb_submit_urb(ether_dev->rx_urb, GFP_KERNEL)) ) { // Hmm... Okay... warn( __FUNCTION__ " failed rx_urb %d", res ); diff -Nru a/drivers/usb/acm.c b/drivers/usb/acm.c --- a/drivers/usb/acm.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/acm.c Mon Feb 4 22:08:35 2002 @@ -261,7 +261,7 @@ urb->actual_length = 0; urb->dev = acm->dev; - if (usb_submit_urb(urb)) + if (usb_submit_urb(urb, GFP_KERNEL)) dbg("failed resubmitting read urb"); } @@ -316,11 +316,11 @@ unlock_kernel(); acm->ctrlurb.dev = acm->dev; - if (usb_submit_urb(&acm->ctrlurb)) + if (usb_submit_urb(&acm->ctrlurb, GFP_KERNEL)) dbg("usb_submit_urb(ctrl irq) failed"); acm->readurb.dev = acm->dev; - if (usb_submit_urb(&acm->readurb)) + if (usb_submit_urb(&acm->readurb, GFP_KERNEL)) dbg("usb_submit_urb(read bulk) failed"); acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS); @@ -371,7 +371,7 @@ acm->writeurb.transfer_buffer_length = count; acm->writeurb.dev = acm->dev; - if (usb_submit_urb(&acm->writeurb)) + if (usb_submit_urb(&acm->writeurb, GFP_KERNEL)) dbg("usb_submit_urb(write bulk) failed"); return count; diff -Nru a/drivers/usb/audio.c b/drivers/usb/audio.c --- a/drivers/usb/audio.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/audio.c Mon Feb 4 22:08:35 2002 @@ -917,7 +917,7 @@ if (!usbin_retire_desc(u, urb) && u->flags & FLG_RUNNING && !usbin_prepare_desc(u, urb) && - (suret = usb_submit_urb(urb)) == 0) { + (suret = usb_submit_urb(urb, GFP_KERNEL)) == 0) { u->flags |= mask; } else { u->flags &= ~(mask | FLG_RUNNING); @@ -982,7 +982,7 @@ if (!usbin_sync_retire_desc(u, urb) && u->flags & FLG_RUNNING && !usbin_sync_prepare_desc(u, urb) && - (suret = usb_submit_urb(urb)) == 0) { + (suret = usb_submit_urb(urb, GFP_KERNEL)) == 0) { u->flags |= mask; } else { u->flags &= ~(mask | FLG_RUNNING); @@ -1055,7 +1055,7 @@ urb->number_of_packets = DESCFRAMES; urb->context = as; urb->complete = usbin_completed; - if (!usbin_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbin_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_URB0RUNNING; else u->flags &= ~FLG_RUNNING; @@ -1068,7 +1068,7 @@ urb->number_of_packets = DESCFRAMES; urb->context = as; urb->complete = usbin_completed; - if (!usbin_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbin_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_URB1RUNNING; else u->flags &= ~FLG_RUNNING; @@ -1083,7 +1083,7 @@ urb->context = as; urb->complete = usbin_sync_completed; /* stride: u->syncinterval */ - if (!usbin_sync_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbin_sync_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_SYNC0RUNNING; else u->flags &= ~FLG_RUNNING; @@ -1097,7 +1097,7 @@ urb->context = as; urb->complete = usbin_sync_completed; /* stride: u->syncinterval */ - if (!usbin_sync_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbin_sync_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_SYNC1RUNNING; else u->flags &= ~FLG_RUNNING; @@ -1275,7 +1275,7 @@ if (!usbout_retire_desc(u, urb) && u->flags & FLG_RUNNING && !usbout_prepare_desc(u, urb) && - (suret = usb_submit_urb(urb)) == 0) { + (suret = usb_submit_urb(urb, GFP_KERNEL)) == 0) { u->flags |= mask; } else { u->flags &= ~(mask | FLG_RUNNING); @@ -1347,7 +1347,7 @@ if (!usbout_sync_retire_desc(u, urb) && u->flags & FLG_RUNNING && !usbout_sync_prepare_desc(u, urb) && - (suret = usb_submit_urb(urb)) == 0) { + (suret = usb_submit_urb(urb, GFP_KERNEL)) == 0) { u->flags |= mask; } else { u->flags &= ~(mask | FLG_RUNNING); @@ -1420,7 +1420,7 @@ urb->number_of_packets = DESCFRAMES; urb->context = as; urb->complete = usbout_completed; - if (!usbout_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbout_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_URB0RUNNING; else u->flags &= ~FLG_RUNNING; @@ -1433,7 +1433,7 @@ urb->number_of_packets = DESCFRAMES; urb->context = as; urb->complete = usbout_completed; - if (!usbout_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbout_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_URB1RUNNING; else u->flags &= ~FLG_RUNNING; @@ -1448,7 +1448,7 @@ urb->context = as; urb->complete = usbout_sync_completed; /* stride: u->syncinterval */ - if (!usbout_sync_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbout_sync_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_SYNC0RUNNING; else u->flags &= ~FLG_RUNNING; @@ -1462,7 +1462,7 @@ urb->context = as; urb->complete = usbout_sync_completed; /* stride: u->syncinterval */ - if (!usbout_sync_prepare_desc(u, urb) && !usb_submit_urb(urb)) + if (!usbout_sync_prepare_desc(u, urb) && !usb_submit_urb(urb, GFP_KERNEL)) u->flags |= FLG_SYNC1RUNNING; else u->flags &= ~FLG_RUNNING; diff -Nru a/drivers/usb/auerswald.c b/drivers/usb/auerswald.c --- a/drivers/usb/auerswald.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/auerswald.c Mon Feb 4 22:08:35 2002 @@ -330,7 +330,7 @@ urb = acep->urbp; dbg ("auerchain_complete: submitting next urb from chain"); urb->status = 0; /* needed! */ - result = usb_submit_urb( urb); + result = usb_submit_urb(urb, GFP_KERNEL); /* check for submit errors */ if (result) { @@ -408,7 +408,7 @@ if (acep) { dbg("submitting urb immediate"); urb->status = 0; /* needed! */ - result = usb_submit_urb( urb); + result = usb_submit_urb(urb, GFP_KERNEL); /* check for submit errors */ if (result) { urb->status = result; @@ -1128,7 +1128,7 @@ FILL_INT_URB (cp->inturbp, cp->usbdev, usb_rcvintpipe (cp->usbdev,AU_IRQENDP), cp->intbufp, irqsize, auerswald_int_complete, cp, ep->bInterval); /* start the urb */ cp->inturbp->status = 0; /* needed! */ - ret = usb_submit_urb (cp->inturbp); + ret = usb_submit_urb (cp->inturbp, GFP_KERNEL); intoend: if (ret < 0) { diff -Nru a/drivers/usb/bluetooth.c b/drivers/usb/bluetooth.c --- a/drivers/usb/bluetooth.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/bluetooth.c Mon Feb 4 22:08:35 2002 @@ -335,7 +335,7 @@ (unsigned char*)dr, urb->transfer_buffer, len, bluetooth_ctrl_callback, bluetooth); /* send it down the pipe */ - status = usb_submit_urb(urb); + status = usb_submit_urb(urb, GFP_KERNEL); if (status) dbg(__FUNCTION__ " - usb_submit_urb(control) failed with status = %d", status); @@ -390,7 +390,7 @@ bluetooth->bulk_in_buffer, bluetooth->bulk_in_buffer_size, bluetooth_read_bulk_callback, bluetooth); - result = usb_submit_urb(bluetooth->read_urb); + result = usb_submit_urb(bluetooth->read_urb, GFP_KERNEL); if (result) dbg(__FUNCTION__ " - usb_submit_urb(read bulk) failed with status %d", result); #endif @@ -400,7 +400,7 @@ bluetooth->interrupt_in_buffer_size, bluetooth_int_callback, bluetooth, bluetooth->interrupt_in_interval); - result = usb_submit_urb(bluetooth->interrupt_in_urb); + result = usb_submit_urb(bluetooth->interrupt_in_urb, GFP_KERNEL); if (result) dbg(__FUNCTION__ " - usb_submit_urb(interrupt in) failed with status %d", result); } @@ -540,7 +540,7 @@ urb->transfer_flags |= USB_QUEUE_BULK; /* send it down the pipe */ - retval = usb_submit_urb(urb); + retval = usb_submit_urb(urb, GFP_KERNEL); if (retval) { dbg(__FUNCTION__ " - usb_submit_urb(write bulk) failed with error = %d", retval); goto exit; @@ -730,7 +730,7 @@ usb_rcvbulkpipe(bluetooth->dev, bluetooth->bulk_in_endpointAddress), bluetooth->bulk_in_buffer, bluetooth->bulk_in_buffer_size, bluetooth_read_bulk_callback, bluetooth); - result = usb_submit_urb(bluetooth->read_urb); + result = usb_submit_urb(bluetooth->read_urb, GFP_KERNEL); if (result) err (__FUNCTION__ " - failed submitting read urb, error %d", result); } @@ -921,7 +921,7 @@ usb_rcvbulkpipe(bluetooth->dev, bluetooth->bulk_in_endpointAddress), bluetooth->bulk_in_buffer, bluetooth->bulk_in_buffer_size, bluetooth_read_bulk_callback, bluetooth); - result = usb_submit_urb(bluetooth->read_urb); + result = usb_submit_urb(bluetooth->read_urb, GFP_KERNEL); if (result) err (__FUNCTION__ " - failed resubmitting read urb, error %d", result); @@ -982,7 +982,7 @@ usb_rcvbulkpipe(bluetooth->dev, bluetooth->bulk_in_endpointAddress), bluetooth->bulk_in_buffer, bluetooth->bulk_in_buffer_size, bluetooth_read_bulk_callback, bluetooth); - result = usb_submit_urb(bluetooth->read_urb); + result = usb_submit_urb(bluetooth->read_urb, GFP_KERNEL); if (result) err (__FUNCTION__ " - failed resubmitting read urb, error %d", result); diff -Nru a/drivers/usb/catc.c b/drivers/usb/catc.c --- a/drivers/usb/catc.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/catc.c Mon Feb 4 22:08:35 2002 @@ -257,7 +257,7 @@ if ((data[1] & 0x80) && !test_and_set_bit(RX_RUNNING, &catc->flags)) { catc->rx_urb->dev = catc->usbdev; - if ((status = usb_submit_urb(catc->rx_urb)) < 0) { + if ((status = usb_submit_urb(catc->rx_urb, GFP_KERNEL)) < 0) { err("submit(rx_urb) status %d", status); return; } @@ -286,7 +286,7 @@ catc->tx_urb->transfer_buffer = catc->tx_buf[catc->tx_idx]; catc->tx_urb->dev = catc->usbdev; - if ((status = usb_submit_urb(catc->tx_urb)) < 0) + if ((status = usb_submit_urb(catc->tx_urb, GFP_KERNEL)) < 0) err("submit(tx_urb), status %d", status); catc->tx_idx = !catc->tx_idx; @@ -402,7 +402,7 @@ if (!q->dir && q->buf && q->len) memcpy(catc->ctrl_buf, q->buf, q->len); - if ((status = usb_submit_urb(catc->ctrl_urb))) + if ((status = usb_submit_urb(catc->ctrl_urb, GFP_KERNEL))) err("submit(ctrl_urb) status %d", status); } @@ -625,7 +625,7 @@ int status; catc->irq_urb->dev = catc->usbdev; - if ((status = usb_submit_urb(catc->irq_urb)) < 0) { + if ((status = usb_submit_urb(catc->irq_urb, GFP_KERNEL)) < 0) { err("submit(irq_urb) status %d", status); return -1; } diff -Nru a/drivers/usb/dabusb.c b/drivers/usb/dabusb.c --- a/drivers/usb/dabusb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/dabusb.c Mon Feb 4 22:08:35 2002 @@ -458,7 +458,7 @@ end = list_entry (s->rec_buff_list.prev, buff_t, buff_list); - ret = usb_submit_urb (end->purb); + ret = usb_submit_urb (end->purb, GFP_KERNEL); if (ret) { err("usb_submit_urb returned:%d", ret); if (dabusb_add_buf_tail (s, &s->free_buff_list, &s->rec_buff_list)) diff -Nru a/drivers/usb/devio.c b/drivers/usb/devio.c --- a/drivers/usb/devio.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/devio.c Mon Feb 4 22:08:35 2002 @@ -364,7 +364,7 @@ if (test_bit(intf, &ps->ifclaimed)) return 0; /* if not yet claimed, claim it for the driver */ - printk(KERN_WARNING "usbdevfs: process %d (%s) did not claim interface %u before use\n", + printk(KERN_WARNING "usbfs: process %d (%s) did not claim interface %u before use\n", current->pid, current->comm, intf); return claimintf(ps, intf); } @@ -563,7 +563,7 @@ } free_page((unsigned long)tbuf); if (i<0) { - printk(KERN_DEBUG "usbdevfs: USBDEVFS_CONTROL failed dev %d rqt %u rq %u len %u ret %d\n", + printk(KERN_DEBUG "usbfs: USBDEVFS_CONTROL failed dev %d rqt %u rq %u len %u ret %d\n", dev->devnum, ctrl.bRequestType, ctrl.bRequest, ctrl.wLength, i); } return i; @@ -619,7 +619,7 @@ } free_page((unsigned long)tbuf); if (i < 0) { - printk(KERN_WARNING "usbdevfs: USBDEVFS_BULK failed dev %d ep 0x%x len %u ret %d\n", + printk(KERN_WARNING "usbfs: USBDEVFS_BULK failed dev %d ep 0x%x len %u ret %d\n", dev->devnum, bulk.ep, bulk.len, i); return i; } @@ -906,8 +906,8 @@ } } async_newpending(as); - if ((ret = usb_submit_urb(as->urb))) { - printk(KERN_DEBUG "usbdevfs: usb_submit_urb returned %d\n", ret); + if ((ret = usb_submit_urb(as->urb, GFP_KERNEL))) { + printk(KERN_DEBUG "usbfs: usb_submit_urb returned %d\n", ret); async_removepending(as); free_async(as); return ret; diff -Nru a/drivers/usb/hcd.c b/drivers/usb/hcd.c --- a/drivers/usb/hcd.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/hcd.c Mon Feb 4 22:08:35 2002 @@ -916,14 +916,13 @@ /* may be called in any context with a valid urb->dev usecount */ /* caller surrenders "ownership" of urb (and chain at urb->next). */ -static int hcd_submit_urb (struct urb *urb) +static int hcd_submit_urb (struct urb *urb, int mem_flags) { int status; struct usb_hcd *hcd; struct hcd_dev *dev; unsigned long flags; int pipe; - int mem_flags; if (!urb || urb->hcpriv || !urb->complete) return -EINVAL; @@ -947,11 +946,6 @@ usb_pipeout (pipe))) return -EPIPE; - // FIXME paging/swapping requests over USB should not use GFP_KERNEL - // and might even need to use GFP_NOIO ... that flag actually needs - // to be passed from the higher level. - mem_flags = in_interrupt () ? GFP_ATOMIC : GFP_KERNEL; - #ifdef DEBUG { unsigned int orig_flags = urb->transfer_flags; @@ -1316,7 +1310,7 @@ else if (urb->next) { int status; - status = usb_submit_urb (urb->next); + status = usb_submit_urb (urb->next, GFP_ATOMIC); if (status) { dbg ("urb %p chain fail, %d", urb->next, status); urb->next->status = -ENOTCONN; diff -Nru a/drivers/usb/hid-core.c b/drivers/usb/hid-core.c --- a/drivers/usb/hid-core.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/hid-core.c Mon Feb 4 22:08:35 2002 @@ -992,7 +992,7 @@ hid->urbout.setup_packet = (void *) &(hid->out[hid->outtail].dr); hid->urbout.dev = hid->dev; - if (usb_submit_urb(&hid->urbout)) { + if (usb_submit_urb(&hid->urbout, GFP_KERNEL)) { err("usb_submit_urb(out) failed"); return -1; } @@ -1036,7 +1036,7 @@ hid->urb.dev = hid->dev; - if (usb_submit_urb(&hid->urb)) + if (usb_submit_urb(&hid->urb, GFP_KERNEL)) return -EIO; return 0; diff -Nru a/drivers/usb/hpusbscsi.c b/drivers/usb/hpusbscsi.c --- a/drivers/usb/hpusbscsi.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/hpusbscsi.c Mon Feb 4 22:08:35 2002 @@ -245,7 +245,7 @@ desc->interrupt_interval ); - if ( 0 > usb_submit_urb(desc->controlurb)) { + if ( 0 > usb_submit_urb(desc->controlurb, GFP_KERNEL)) { kfree(sht->proc_name); return 0; } @@ -321,7 +321,7 @@ hpusbscsi->scallback = callback; hpusbscsi->srb = srb; - res = usb_submit_urb(hpusbscsi->dataurb); + res = usb_submit_urb(hpusbscsi->dataurb, GFP_ATOMIC); if (unlikely(res)) { hpusbscsi->state = HP_STATE_FREE; TRACE_STATE; @@ -460,7 +460,7 @@ hpusbscsi ); - res = usb_submit_urb(u); + res = usb_submit_urb(u, GFP_ATOMIC); if (unlikely(res)) hpusbscsi->state = HP_STATE_ERROR; TRACE_STATE; @@ -509,7 +509,7 @@ hpusbscsi ); - res = usb_submit_urb(u); + res = usb_submit_urb(u, GFP_ATOMIC); if (unlikely(res)) { handle_usb_error(hpusbscsi); return; diff -Nru a/drivers/usb/hub.c b/drivers/usb/hub.c --- a/drivers/usb/hub.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/hub.c Mon Feb 4 22:08:35 2002 @@ -312,7 +312,7 @@ FILL_INT_URB(hub->urb, dev, pipe, hub->buffer, maxp, hub_irq, hub, endpoint->bInterval); - ret = usb_submit_urb(hub->urb); + ret = usb_submit_urb(hub->urb, GFP_KERNEL); if (ret) { err("usb_submit_urb failed (%d)", ret); kfree(hub->descriptor); @@ -498,7 +498,7 @@ return -1; hub->urb->dev = dev; - if (usb_submit_urb(hub->urb)) + if (usb_submit_urb(hub->urb, GFP_KERNEL)) return -1; usb_hub_power_on(hub); diff -Nru a/drivers/usb/kaweth.c b/drivers/usb/kaweth.c --- a/drivers/usb/kaweth.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/kaweth.c Mon Feb 4 22:08:35 2002 @@ -447,7 +447,8 @@ /**************************************************************** * kaweth_resubmit_rx_urb ****************************************************************/ -static inline void kaweth_resubmit_rx_urb(struct kaweth_device *kaweth) +static inline void kaweth_resubmit_rx_urb(struct kaweth_device *kaweth, + int mem_flags) { int result; @@ -461,7 +462,7 @@ kaweth_usb_receive, kaweth); - if((result = usb_submit_urb(kaweth->rx_urb))) { + if((result = usb_submit_urb(kaweth->rx_urb, mem_flags))) { kaweth_err("resubmitting rx_urb %d failed", result); } } @@ -493,7 +494,7 @@ urb->status, count, (int)pkt_len); - kaweth_resubmit_rx_urb(kaweth); + kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC); return; } @@ -502,12 +503,12 @@ kaweth_err("Packet length too long for USB frame (pkt_len: %x, count: %x)",pkt_len, count); kaweth_err("Packet len & 2047: %x", pkt_len & 2047); kaweth_err("Count 2: %x", count2); - kaweth_resubmit_rx_urb(kaweth); + kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC); return; } if(!(skb = dev_alloc_skb(pkt_len+2))) { - kaweth_resubmit_rx_urb(kaweth); + kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC); return; } @@ -525,7 +526,7 @@ kaweth->stats.rx_bytes += pkt_len; } - kaweth_resubmit_rx_urb(kaweth); + kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC); } /**************************************************************** @@ -539,11 +540,11 @@ kaweth_dbg("Opening network device."); - kaweth_resubmit_rx_urb(kaweth); + MOD_INC_USE_COUNT; - netif_start_queue(net); + kaweth_resubmit_rx_urb(kaweth, GFP_KERNEL); - MOD_INC_USE_COUNT; + netif_start_queue(net); kaweth_async_set_rx_mode(kaweth); return 0; @@ -621,7 +622,7 @@ kaweth_usb_transmit_complete, kaweth); - if((res = usb_submit_urb(kaweth->tx_urb))) + if((res = usb_submit_urb(kaweth->tx_urb, GFP_ATOMIC))) { kaweth_warn("kaweth failed tx_urb %d", res); kaweth->stats.tx_errors++; @@ -975,7 +976,7 @@ set_current_state(TASK_INTERRUPTIBLE); add_wait_queue(&awd.wqh, &wait); urb->context = &awd; - status = usb_submit_urb(urb); + status = usb_submit_urb(urb, GFP_KERNEL); if (status) { // something went wrong usb_free_urb(urb); diff -Nru a/drivers/usb/mdc800.c b/drivers/usb/mdc800.c --- a/drivers/usb/mdc800.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/mdc800.c Mon Feb 4 22:08:35 2002 @@ -605,7 +605,7 @@ retval=0; mdc800->irq_urb->dev = mdc800->dev; - if (usb_submit_urb (mdc800->irq_urb)) + if (usb_submit_urb (mdc800->irq_urb, GFP_KERNEL)) { err ("request USB irq fails (submit_retval=%i urb_status=%i).",retval, mdc800->irq_urb->status); errn = -EIO; @@ -694,7 +694,7 @@ /* Download -> Request new bytes */ mdc800->download_urb->dev = mdc800->dev; - if (usb_submit_urb (mdc800->download_urb)) + if (usb_submit_urb (mdc800->download_urb, GFP_KERNEL)) { err ("Can't submit download urb (status=%i)",mdc800->download_urb->status); up (&mdc800->io_lock); @@ -808,7 +808,7 @@ mdc800->state=WORKING; memcpy (mdc800->write_urb->transfer_buffer, mdc800->in,8); mdc800->write_urb->dev = mdc800->dev; - if (usb_submit_urb (mdc800->write_urb)) + if (usb_submit_urb (mdc800->write_urb, GFP_KERNEL)) { err ("submitting write urb fails (status=%i)", mdc800->write_urb->status); up (&mdc800->io_lock); diff -Nru a/drivers/usb/microtek.c b/drivers/usb/microtek.c --- a/drivers/usb/microtek.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/microtek.c Mon Feb 4 22:08:35 2002 @@ -499,7 +499,7 @@ transfer->status = 0; - res = usb_submit_urb( transfer ); + res = usb_submit_urb( transfer, GFP_ATOMIC ); if ( unlikely(res) ) { MTS_INT_ERROR( "could not submit URB! Error was %d\n",(int)res ); context->srb->result = DID_ERROR << 16; @@ -719,7 +719,8 @@ mts_build_transfer_context( srb, desc ); desc->context.final_callback = callback; - res=usb_submit_urb(desc->urb); + /* here we need ATOMIC as we are called with the iolock */ + res=usb_submit_urb(desc->urb, GFP_ATOMIC); if(unlikely(res)){ MTS_ERROR("error %d submitting URB\n",(int)res); diff -Nru a/drivers/usb/ov511.c b/drivers/usb/ov511.c --- a/drivers/usb/ov511.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/ov511.c Mon Feb 4 22:08:35 2002 @@ -4457,7 +4457,7 @@ for (n = 0; n < OV511_NUMSBUF; n++) { ov511->sbuf[n].urb->dev = ov511->dev; - err = usb_submit_urb(ov511->sbuf[n].urb); + err = usb_submit_urb(ov511->sbuf[n].urb, GFP_KERNEL); if (err) err("init isoc: usb_submit_urb(%d) ret %d", n, err); } diff -Nru a/drivers/usb/pegasus.c b/drivers/usb/pegasus.c --- a/drivers/usb/pegasus.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/pegasus.c Mon Feb 4 22:08:35 2002 @@ -157,7 +157,8 @@ add_wait_queue( &pegasus->ctrl_wait, &wait ); set_current_state( TASK_UNINTERRUPTIBLE ); - if ( (ret = usb_submit_urb( pegasus->ctrl_urb )) ) { + /* using ATOMIC, we'd never wake up if we slept */ + if ( (ret = usb_submit_urb( pegasus->ctrl_urb, GFP_ATOMIC )) ) { err("%s: BAD CTRLs %d", __FUNCTION__, ret); goto out; } @@ -207,7 +208,7 @@ add_wait_queue( &pegasus->ctrl_wait, &wait ); set_current_state( TASK_UNINTERRUPTIBLE ); - if ( (ret = usb_submit_urb( pegasus->ctrl_urb )) ) { + if ( (ret = usb_submit_urb( pegasus->ctrl_urb, GFP_ATOMIC )) ) { err("%s: BAD CTRL %d", __FUNCTION__, ret); goto out; } @@ -257,7 +258,7 @@ add_wait_queue( &pegasus->ctrl_wait, &wait ); set_current_state( TASK_UNINTERRUPTIBLE ); - if ( (ret = usb_submit_urb( pegasus->ctrl_urb )) ) { + if ( (ret = usb_submit_urb( pegasus->ctrl_urb, GFP_ATOMIC )) ) { err("%s: BAD CTRL %d", __FUNCTION__, ret); goto out; } @@ -287,7 +288,7 @@ (char *)&pegasus->dr, pegasus->eth_regs, 3, ctrl_callback, pegasus ); - if ( (ret = usb_submit_urb( pegasus->ctrl_urb )) ) + if ( (ret = usb_submit_urb( pegasus->ctrl_urb, GFP_ATOMIC )) ) err("%s: BAD CTRL %d, flgs %x",__FUNCTION__,ret,pegasus->flags); return ret; @@ -573,7 +574,7 @@ usb_rcvbulkpipe(pegasus->usb, 1), pegasus->rx_buff, PEGASUS_MAX_MTU, read_bulk_callback, pegasus ); - if ( (res = usb_submit_urb(pegasus->rx_urb)) ) + if ( (res = usb_submit_urb(pegasus->rx_urb, GFP_ATOMIC)) ) warn("%s: failed submint rx_urb %d", __FUNCTION__, res); pegasus->flags &= ~PEGASUS_RX_BUSY; } @@ -661,7 +662,7 @@ pegasus->tx_buff, PEGASUS_MAX_MTU, write_bulk_callback, pegasus ); pegasus->tx_urb->transfer_buffer_length = count; - if ((res = usb_submit_urb(pegasus->tx_urb))) { + if ((res = usb_submit_urb(pegasus->tx_urb, GFP_ATOMIC))) { warn("failed tx_urb %d", res); pegasus->stats.tx_errors++; netif_start_queue( net ); @@ -721,14 +722,14 @@ usb_rcvbulkpipe(pegasus->usb, 1), pegasus->rx_buff, PEGASUS_MAX_MTU, read_bulk_callback, pegasus ); - if ( (res = usb_submit_urb(pegasus->rx_urb)) ) + if ( (res = usb_submit_urb(pegasus->rx_urb, GFP_KERNEL)) ) warn("%s: failed rx_urb %d", __FUNCTION__, res); #ifdef PEGASUS_USE_INTR FILL_INT_URB( pegasus->intr_urb, pegasus->usb, usb_rcvintpipe(pegasus->usb, 3), pegasus->intr_buff, sizeof(pegasus->intr_buff), intr_callback, pegasus, pegasus->intr_interval ); - if ( (res = usb_submit_urb(pegasus->intr_urb)) ) + if ( (res = usb_submit_urb(pegasus->intr_urb, GFP_KERNEL)) ) warn("%s: failed intr_urb %d", __FUNCTION__, res); #endif netif_start_queue( net ); diff -Nru a/drivers/usb/printer.c b/drivers/usb/printer.c --- a/drivers/usb/printer.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/printer.c Mon Feb 4 22:08:35 2002 @@ -261,7 +261,7 @@ if (usblp->bidir) { usblp->readcount = 0; usblp->readurb.dev = usblp->dev; - if (usb_submit_urb(&usblp->readurb) < 0) { + if (usb_submit_urb(&usblp->readurb, GFP_KERNEL) < 0) { retval = -EIO; usblp->used = 0; file->private_data = NULL; @@ -456,7 +456,7 @@ usblp->writeurb.dev = usblp->dev; usblp->wcomplete = 0; - if (usb_submit_urb(&usblp->writeurb)) { + if (usb_submit_urb(&usblp->writeurb, GFP_KERNEL)) { count = -EIO; up (&usblp->sem); break; @@ -521,7 +521,7 @@ usblp->minor, usblp->readurb.status); usblp->readurb.dev = usblp->dev; usblp->readcount = 0; - usb_submit_urb(&usblp->readurb); + usb_submit_urb(&usblp->readurb, GFP_KERNEL); count = -EIO; goto done; } @@ -538,7 +538,7 @@ usblp->readcount = 0; usblp->readurb.dev = usblp->dev; usblp->rcomplete = 0; - if (usb_submit_urb(&usblp->readurb)) { + if (usb_submit_urb(&usblp->readurb, GFP_KERNEL)) { count = -EIO; goto done; } diff -Nru a/drivers/usb/pwc-if.c b/drivers/usb/pwc-if.c --- a/drivers/usb/pwc-if.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/pwc-if.c Mon Feb 4 22:08:35 2002 @@ -869,7 +869,7 @@ /* link */ for (i = 0; i < MAX_ISO_BUFS; i++) { - ret = usb_submit_urb(pdev->sbuf[i].urb); + ret = usb_submit_urb(pdev->sbuf[i].urb, GFP_KERNEL); if (ret) Err("isoc_init() submit_urb %d failed with error %d\n", i, ret); else diff -Nru a/drivers/usb/scanner.c b/drivers/usb/scanner.c --- a/drivers/usb/scanner.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/scanner.c Mon Feb 4 22:08:35 2002 @@ -992,7 +992,7 @@ // endpoint[(int)have_intr].bInterval); 250); - if (usb_submit_urb(scn->scn_irq)) { + if (usb_submit_urb(scn->scn_irq, GFP_KERNEL)) { err("probe_scanner(%d): Unable to allocate INT URB.", scn_minor); kfree(scn); up(&scn_mutex); diff -Nru a/drivers/usb/se401.c b/drivers/usb/se401.c --- a/drivers/usb/se401.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/se401.c Mon Feb 4 22:08:35 2002 @@ -556,7 +556,7 @@ /* Resubmit urb for new data */ urb->status=0; urb->dev=se401->dev; - if(usb_submit_urb(urb)) + if(usb_submit_urb(urb, GFP_KERNEL)) info("urb burned down"); return; } @@ -657,7 +657,7 @@ se401->urb[i]=urb; - err=usb_submit_urb(se401->urb[i]); + err=usb_submit_urb(se401->urb[i], GFP_KERNEL); if(err) err("urb burned down"); } @@ -1477,7 +1477,7 @@ se401, HZ/10 ); - if (usb_submit_urb(se401->inturb)) { + if (usb_submit_urb(se401->inturb, GFP_KERNEL)) { info("int urb burned down"); return 1; } diff -Nru a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c --- a/drivers/usb/serial/belkin_sa.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/belkin_sa.c Mon Feb 4 22:08:35 2002 @@ -217,14 +217,14 @@ * enhance buffering. Win trace shows 16 initial read URBs. */ port->read_urb->dev = port->serial->dev; - retval = usb_submit_urb(port->read_urb); + retval = usb_submit_urb(port->read_urb, GFP_KERNEL); if (retval) { err("usb_submit_urb(read bulk) failed"); goto exit; } port->interrupt_in_urb->dev = port->serial->dev; - retval = usb_submit_urb(port->interrupt_in_urb); + retval = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); if (retval) err(" usb_submit_urb(read int) failed"); } diff -Nru a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c --- a/drivers/usb/serial/cyberjack.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/cyberjack.c Mon Feb 4 22:08:35 2002 @@ -173,7 +173,7 @@ usb_unlink_urb (port->interrupt_in_urb); port->interrupt_in_urb->dev = port->serial->dev; - result = usb_submit_urb(port->interrupt_in_urb); + result = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); if (result) err(" usb_submit_urb(read int) failed"); dbg(__FUNCTION__ " - usb_submit_urb(int urb)"); @@ -271,7 +271,7 @@ port); /* send the data out the bulk port */ - result = usb_submit_urb(port->write_urb); + result = usb_submit_urb(port->write_urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting write urb, error %d", result); /* Throw away data. No better idea what to do with it. */ @@ -342,7 +342,7 @@ if( !old_rdtodo ) { port->read_urb->dev = port->serial->dev; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if( result ) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); dbg(__FUNCTION__ " - usb_submit_urb(read urb)"); @@ -398,7 +398,7 @@ /* Continue to read if we have still urbs to do. */ if( priv->rdtodo /* || (urb->actual_length==port->bulk_in_endpointAddress)*/ ) { port->read_urb->dev = port->serial->dev; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); dbg(__FUNCTION__ " - usb_submit_urb(read urb)"); @@ -453,7 +453,7 @@ port); /* send the data out the bulk port */ - result = usb_submit_urb(port->write_urb); + result = usb_submit_urb(port->write_urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting write urb, error %d", result); /* Throw away data. No better idea what to do with it. */ diff -Nru a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c --- a/drivers/usb/serial/digi_acceleport.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/digi_acceleport.c Mon Feb 4 22:08:35 2002 @@ -676,7 +676,7 @@ oob_port->write_urb->transfer_buffer_length = len; oob_port->write_urb->dev = port->serial->dev; - if( (ret=usb_submit_urb(oob_port->write_urb)) == 0 ) { + if( (ret=usb_submit_urb(oob_port->write_urb, GFP_KERNEL)) == 0 ) { oob_priv->dp_write_urb_in_use = 1; count -= len; buf += len; @@ -764,7 +764,7 @@ } port->write_urb->dev = port->serial->dev; - if( (ret=usb_submit_urb(port->write_urb)) == 0 ) { + if( (ret=usb_submit_urb(port->write_urb, GFP_KERNEL)) == 0 ) { priv->dp_write_urb_in_use = 1; priv->dp_out_buf_len = 0; count -= len; @@ -841,7 +841,7 @@ oob_port->write_urb->transfer_buffer_length = 8; oob_port->write_urb->dev = port->serial->dev; - if( (ret=usb_submit_urb(oob_port->write_urb)) == 0 ) { + if( (ret=usb_submit_urb(oob_port->write_urb, GFP_KERNEL)) == 0 ) { oob_priv->dp_write_urb_in_use = 1; port_priv->dp_modem_signals = (port_priv->dp_modem_signals&~(TIOCM_DTR|TIOCM_RTS)) @@ -962,7 +962,7 @@ /* restart read chain */ if( priv->dp_throttle_restart ) { port->read_urb->dev = port->serial->dev; - ret = usb_submit_urb( port->read_urb ); + ret = usb_submit_urb( port->read_urb, GFP_KERNEL ); } /* turn throttle off */ @@ -1323,7 +1323,7 @@ /* copy in new data */ memcpy( data, from_user ? user_buf : buf, new_len ); - if( (ret=usb_submit_urb(port->write_urb)) == 0 ) { + if( (ret=usb_submit_urb(port->write_urb, GFP_KERNEL)) == 0 ) { priv->dp_write_urb_in_use = 1; ret = new_len; priv->dp_out_buf_len = 0; @@ -1399,7 +1399,7 @@ memcpy( port->write_urb->transfer_buffer+2, priv->dp_out_buf, priv->dp_out_buf_len ); - if( (ret=usb_submit_urb(port->write_urb)) == 0 ) { + if( (ret=usb_submit_urb(port->write_urb, GFP_KERNEL)) == 0 ) { priv->dp_write_urb_in_use = 1; priv->dp_out_buf_len = 0; } @@ -1677,7 +1677,7 @@ port->write_urb->dev = port->serial->dev; - if( (ret=usb_submit_urb(port->read_urb)) != 0 ) { + if( (ret=usb_submit_urb(port->read_urb, GFP_KERNEL)) != 0 ) { err( __FUNCTION__ ": usb_submit_urb failed, ret=%d, port=%d", ret, i ); @@ -1837,7 +1837,7 @@ /* continue read */ urb->dev = port->serial->dev; - if( (ret=usb_submit_urb(urb)) != 0 ) { + if( (ret=usb_submit_urb(urb, GFP_KERNEL)) != 0 ) { err( __FUNCTION__ ": failed resubmitting urb, ret=%d, port=%d", ret, priv->dp_port_num ); } diff -Nru a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c --- a/drivers/usb/serial/empeg.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/empeg.c Mon Feb 4 22:08:35 2002 @@ -182,7 +182,7 @@ port->read_urb->transfer_flags |= USB_QUEUE_BULK; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting read urb, error %d", result); @@ -296,7 +296,7 @@ urb->transfer_flags |= USB_QUEUE_BULK; /* send it down the pipe */ - status = usb_submit_urb(urb); + status = usb_submit_urb(urb, GFP_KERNEL); if (status) { err(__FUNCTION__ " - usb_submit_urb(write bulk) failed with status = %d", status); bytes_sent = status; @@ -449,7 +449,7 @@ port->read_urb->transfer_flags |= USB_QUEUE_BULK; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); @@ -484,7 +484,7 @@ port->read_urb->dev = port->serial->dev; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting read urb, error %d", result); diff -Nru a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c --- a/drivers/usb/serial/ftdi_sio.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/ftdi_sio.c Mon Feb 4 22:08:35 2002 @@ -356,7 +356,7 @@ usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ftdi_sio_read_bulk_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting read urb, error %d", result); } @@ -479,7 +479,7 @@ port->write_urb->transfer_buffer, count, ftdi_sio_write_bulk_callback, port); - result = usb_submit_urb(port->write_urb); + result = usb_submit_urb(port->write_urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting write urb, error %d", result); up (&port->sem); @@ -644,7 +644,7 @@ port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ftdi_sio_read_bulk_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); diff -Nru a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c --- a/drivers/usb/serial/io_edgeport.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/io_edgeport.c Mon Feb 4 22:08:35 2002 @@ -787,7 +787,7 @@ /* we have pending bytes on the bulk in pipe, send a request */ edge_serial->read_urb->dev = edge_serial->serial->dev; - result = usb_submit_urb(edge_serial->read_urb); + result = usb_submit_urb(edge_serial->read_urb, GFP_KERNEL); if (result) { dbg(__FUNCTION__" - usb_submit_urb(read bulk) failed with result = %d", result); } @@ -864,7 +864,7 @@ /* there is, so resubmit our urb */ edge_serial->read_urb->dev = edge_serial->serial->dev; - status = usb_submit_urb(edge_serial->read_urb); + status = usb_submit_urb(edge_serial->read_urb, GFP_KERNEL); if (status) { err(__FUNCTION__" - usb_submit_urb(read bulk) failed, status = %d", status); } @@ -1031,7 +1031,7 @@ /* start interrupt read for this edgeport * this interrupt will continue as long as the edgeport is connected */ - response = usb_submit_urb (edge_serial->interrupt_read_urb); + response = usb_submit_urb (edge_serial->interrupt_read_urb, GFP_KERNEL); if (response) { err(__FUNCTION__" - Error %d submitting control urb", response); } @@ -1471,7 +1471,7 @@ urb->transfer_flags |= USB_QUEUE_BULK; urb->dev = edge_serial->serial->dev; - status = usb_submit_urb(urb); + status = usb_submit_urb(urb, GFP_KERNEL); if (status) { /* something went wrong */ dbg(__FUNCTION__" - usb_submit_urb(write bulk) failed"); @@ -2477,7 +2477,7 @@ urb->transfer_flags |= USB_QUEUE_BULK; edge_port->commandPending = TRUE; - status = usb_submit_urb(urb); + status = usb_submit_urb(urb, GFP_KERNEL); if (status) { /* something went wrong */ diff -Nru a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c --- a/drivers/usb/serial/ipaq.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/ipaq.c Mon Feb 4 22:08:35 2002 @@ -171,7 +171,7 @@ usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ipaq_read_bulk_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting read urb, error %d", result); } @@ -288,7 +288,7 @@ usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ipaq_read_bulk_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); return; @@ -403,7 +403,7 @@ usb_sndbulkpipe(serial->dev, port->bulk_out_endpointAddress), port->write_urb->transfer_buffer, count, ipaq_write_bulk_callback, port); - result = usb_submit_urb(urb); + result = usb_submit_urb(urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting write urb, error %d", result); } diff -Nru a/drivers/usb/serial/ir-usb.c b/drivers/usb/serial/ir-usb.c --- a/drivers/usb/serial/ir-usb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/ir-usb.c Mon Feb 4 22:08:35 2002 @@ -289,7 +289,7 @@ ir_read_bulk_callback, port); port->read_urb->transfer_flags = USB_QUEUE_BULK; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err("%s - failed submitting read urb, error %d", __FUNCTION__, result); } @@ -382,7 +382,7 @@ = USB_QUEUE_BULK | USB_ZERO_PACKET; - result = usb_submit_urb (port->write_urb); + result = usb_submit_urb (port->write_urb, GFP_KERNEL); if (result) err("%s - failed submitting write urb, error %d", __FUNCTION__, result); else @@ -492,7 +492,7 @@ port->read_urb->transfer_flags = USB_QUEUE_BULK; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err("%s - failed resubmitting read urb, error %d", @@ -591,7 +591,7 @@ = USB_QUEUE_BULK | USB_ZERO_PACKET; - result = usb_submit_urb (port->write_urb); + result = usb_submit_urb (port->write_urb, GFP_KERNEL); if (result) err("%s - failed submitting write urb, error %d", __FUNCTION__, result); } diff -Nru a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c --- a/drivers/usb/serial/keyspan.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/keyspan.c Mon Feb 4 22:08:35 2002 @@ -378,7 +378,7 @@ this_urb->transfer_flags &= ~USB_ASYNC_UNLINK; this_urb->dev = port->serial->dev; - if ((err = usb_submit_urb(this_urb)) != 0) { + if ((err = usb_submit_urb(this_urb, GFP_KERNEL)) != 0) { dbg("usb_submit_urb(write bulk) failed (%d)\n", err); } p_priv->tx_start_time[flip] = jiffies; @@ -436,7 +436,7 @@ /* Resubmit urb so we continue receiving */ urb->dev = port->serial->dev; - if ((err = usb_submit_urb(urb)) != 0) { + if ((err = usb_submit_urb(urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ "resubmit read urb failed. (%d)\n", err); } return; @@ -535,7 +535,7 @@ exit: /* Resubmit urb so we continue receiving */ urb->dev = serial->dev; - if ((err = usb_submit_urb(urb)) != 0) { + if ((err = usb_submit_urb(urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ "resubmit read urb failed. (%d)\n", err); } } @@ -586,7 +586,7 @@ /* Resubmit urb so we continue receiving */ urb->dev = port->serial->dev; - if ((err = usb_submit_urb(urb)) != 0) { + if ((err = usb_submit_urb(urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ "resubmit read urb failed. (%d)\n", err); } @@ -671,7 +671,7 @@ exit: /* Resubmit urb so we continue receiving */ urb->dev = serial->dev; - if ((err = usb_submit_urb(urb)) != 0) { + if ((err = usb_submit_urb(urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ "resubmit read urb failed. (%d)\n", err); } } @@ -764,7 +764,7 @@ /* Resubmit urb so we continue receiving */ urb->dev = serial->dev; - if ((err = usb_submit_urb(urb)) != 0) { + if ((err = usb_submit_urb(urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ "resubmit read urb failed. (%d)\n", err); } } @@ -819,7 +819,7 @@ /* Resubmit urb so we continue receiving */ urb->dev = port->serial->dev; - if ((err = usb_submit_urb(urb)) != 0) { + if ((err = usb_submit_urb(urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ "resubmit read urb failed. (%d)\n", err); } } @@ -880,7 +880,7 @@ if ((urb = p_priv->in_urbs[i]) == NULL) continue; urb->dev = serial->dev; - if ((err = usb_submit_urb(urb)) != 0) { + if ((err = usb_submit_urb(urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ " submit urb %d failed (%d)\n", i, err); } } @@ -1408,7 +1408,7 @@ this_urb->transfer_buffer_length = sizeof(msg); this_urb->dev = serial->dev; - if ((err = usb_submit_urb(this_urb)) != 0) { + if ((err = usb_submit_urb(this_urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ " usb_submit_urb(setup) failed (%d)\n", err); } #if 0 @@ -1494,7 +1494,7 @@ this_urb->transfer_buffer_length = sizeof(msg); this_urb->dev = serial->dev; - if ((err = usb_submit_urb(this_urb)) != 0) { + if ((err = usb_submit_urb(this_urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ " usb_submit_urb(setup) failed\n"); } #if 0 @@ -1622,7 +1622,7 @@ this_urb->transfer_buffer_length = sizeof(msg); this_urb->dev = serial->dev; - if ((err = usb_submit_urb(this_urb)) != 0) { + if ((err = usb_submit_urb(this_urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ " usb_submit_urb(setup) failed (%d)\n", err); } #if 0 @@ -1708,7 +1708,7 @@ keyspan_setup_urbs(serial); s_priv->instat_urb->dev = serial->dev; - if ((err = usb_submit_urb(s_priv->instat_urb)) != 0) { + if ((err = usb_submit_urb(s_priv->instat_urb, GFP_KERNEL)) != 0) { dbg(__FUNCTION__ " submit instat urb failed %d\n", err); } diff -Nru a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c --- a/drivers/usb/serial/keyspan_pda.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/keyspan_pda.c Mon Feb 4 22:08:35 2002 @@ -292,7 +292,7 @@ /* just restart the receive interrupt URB */ dbg("keyspan_pda_rx_unthrottle port %d", port->number); port->interrupt_in_urb->dev = port->serial->dev; - if (usb_submit_urb(port->interrupt_in_urb)) + if (usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL)) dbg(" usb_submit_urb(read urb) failed"); return; } @@ -584,7 +584,7 @@ priv->tx_room -= count; port->write_urb->dev = port->serial->dev; - rc = usb_submit_urb(port->write_urb); + rc = usb_submit_urb(port->write_urb, GFP_KERNEL); if (rc) { dbg(" usb_submit_urb(write bulk) failed"); goto exit; @@ -699,7 +699,7 @@ /*Start reading from the device*/ port->interrupt_in_urb->dev = serial->dev; - rc = usb_submit_urb(port->interrupt_in_urb); + rc = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); if (rc) { dbg(__FUNCTION__" - usb_submit_urb(read int) failed"); goto error; diff -Nru a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c --- a/drivers/usb/serial/kl5kusb105.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/kl5kusb105.c Mon Feb 4 22:08:35 2002 @@ -404,7 +404,7 @@ port); port->read_urb->transfer_flags |= USB_QUEUE_BULK; - rc = usb_submit_urb(port->read_urb); + rc = usb_submit_urb(port->read_urb, GFP_KERNEL); if (rc) { err(__FUNCTION__ " - failed submitting read urb, error %d", rc); @@ -567,7 +567,7 @@ /* send the data out the bulk port */ - result = usb_submit_urb(urb); + result = usb_submit_urb(urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting write urb, error %d", result); @@ -734,7 +734,7 @@ port->read_urb->transfer_buffer_length, klsi_105_read_bulk_callback, port); - rc = usb_submit_urb(port->read_urb); + rc = usb_submit_urb(port->read_urb, GFP_KERNEL); if (rc) err(__FUNCTION__ " - failed resubmitting read urb, error %d", rc); @@ -1041,7 +1041,7 @@ down (&port->sem); port->read_urb->dev = port->serial->dev; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting read urb, error %d", result); diff -Nru a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c --- a/drivers/usb/serial/mct_u232.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/mct_u232.c Mon Feb 4 22:08:35 2002 @@ -384,14 +384,14 @@ } port->read_urb->dev = port->serial->dev; - retval = usb_submit_urb(port->read_urb); + retval = usb_submit_urb(port->read_urb, GFP_KERNEL); if (retval) { err("usb_submit_urb(read bulk) failed"); goto exit; } port->interrupt_in_urb->dev = port->serial->dev; - retval = usb_submit_urb(port->interrupt_in_urb); + retval = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); if (retval) err(" usb_submit_urb(read int) failed"); @@ -482,7 +482,7 @@ port); /* send the data out the bulk port */ - result = usb_submit_urb(port->write_urb); + result = usb_submit_urb(port->write_urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting write urb, error %d", result); diff -Nru a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c --- a/drivers/usb/serial/omninet.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/omninet.c Mon Feb 4 22:08:35 2002 @@ -179,7 +179,7 @@ usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, omninet_read_bulk_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting read urb, error %d", result); } @@ -274,7 +274,7 @@ usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), urb->transfer_buffer, urb->transfer_buffer_length, omninet_read_bulk_callback, port); - result = usb_submit_urb(urb); + result = usb_submit_urb(urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); @@ -325,7 +325,7 @@ wport->write_urb->transfer_buffer_length = 64; wport->write_urb->dev = serial->dev; - result = usb_submit_urb(wport->write_urb); + result = usb_submit_urb(wport->write_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting write urb, error %d", result); else diff -Nru a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c --- a/drivers/usb/serial/pl2303.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/pl2303.c Mon Feb 4 22:08:35 2002 @@ -195,7 +195,7 @@ port->write_urb->transfer_buffer_length = count; port->write_urb->dev = port->serial->dev; - result = usb_submit_urb (port->write_urb); + result = usb_submit_urb (port->write_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting write urb, error %d", result); else @@ -404,7 +404,7 @@ dbg (__FUNCTION__ " - submitting read urb"); port->read_urb->dev = serial->dev; - result = usb_submit_urb (port->read_urb); + result = usb_submit_urb (port->read_urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting read urb, error %d", result); up (&port->sem); @@ -414,7 +414,7 @@ dbg (__FUNCTION__ " - submitting interrupt urb"); port->interrupt_in_urb->dev = serial->dev; - result = usb_submit_urb (port->interrupt_in_urb); + result = usb_submit_urb (port->interrupt_in_urb, GFP_KERNEL); if (result) { err(__FUNCTION__ " - failed submitting interrupt urb, error %d", result); up (&port->sem); @@ -652,7 +652,7 @@ dbg (__FUNCTION__ " - caught -EPROTO, resubmitting the urb"); urb->status = 0; urb->dev = serial->dev; - result = usb_submit_urb(urb); + result = usb_submit_urb(urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); return; @@ -677,7 +677,7 @@ /* Schedule the next read _if_ we are still open */ if (port->open_count) { urb->dev = serial->dev; - result = usb_submit_urb(urb); + result = usb_submit_urb(urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); } @@ -706,7 +706,7 @@ dbg (__FUNCTION__ " - nonzero write bulk status received: %d", urb->status); port->write_urb->transfer_buffer_length = 1; port->write_urb->dev = port->serial->dev; - result = usb_submit_urb (port->write_urb); + result = usb_submit_urb (port->write_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting write urb, error %d", result); diff -Nru a/drivers/usb/serial/usbserial.c b/drivers/usb/serial/usbserial.c --- a/drivers/usb/serial/usbserial.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/usbserial.c Mon Feb 4 22:08:35 2002 @@ -813,7 +813,7 @@ serial->type->read_bulk_callback : generic_read_bulk_callback), port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); } @@ -894,7 +894,7 @@ generic_write_bulk_callback), port); /* send the data out the bulk port */ - result = usb_submit_urb(port->write_urb); + result = usb_submit_urb(port->write_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting write urb, error %d", result); else @@ -987,7 +987,7 @@ ((serial->type->read_bulk_callback) ? serial->type->read_bulk_callback : generic_read_bulk_callback), port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); } diff -Nru a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c --- a/drivers/usb/serial/visor.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/visor.c Mon Feb 4 22:08:35 2002 @@ -274,7 +274,7 @@ port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, visor_read_bulk_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting read urb, error %d", result); } @@ -388,7 +388,7 @@ urb->transfer_flags |= USB_QUEUE_BULK; /* send it down the pipe */ - status = usb_submit_urb(urb); + status = usb_submit_urb(urb, GFP_KERNEL); if (status) { err(__FUNCTION__ " - usb_submit_urb(write bulk) failed with status = %d", status); bytes_sent = status; @@ -520,7 +520,7 @@ port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, visor_read_bulk_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed resubmitting read urb, error %d", result); return; @@ -551,7 +551,7 @@ down (&port->sem); port->read_urb->dev = port->serial->dev; - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) err(__FUNCTION__ " - failed submitting read urb, error %d", result); diff -Nru a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c --- a/drivers/usb/serial/whiteheat.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/serial/whiteheat.c Mon Feb 4 22:08:35 2002 @@ -240,7 +240,7 @@ usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, command_port_read_callback, port); - result = usb_submit_urb(port->read_urb); + result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) dbg(__FUNCTION__ " - failed resubmitting read urb, error %d", result); } @@ -265,7 +265,7 @@ memcpy (&transfer_buffer[1], data, datasize); port->write_urb->transfer_buffer_length = datasize + 1; port->write_urb->dev = serial->dev; - retval = usb_submit_urb (port->write_urb); + retval = usb_submit_urb (port->write_urb, GFP_KERNEL); if (retval) { dbg (__FUNCTION__" - submit urb failed"); goto exit; @@ -327,7 +327,7 @@ command_port->read_urb->complete = command_port_read_callback; command_port->read_urb->dev = port->serial->dev; command_port->tty = port->tty; /* need this to "fake" our our sanity check macros */ - retval = usb_submit_urb (command_port->read_urb); + retval = usb_submit_urb (command_port->read_urb, GFP_KERNEL); if (retval) { err(__FUNCTION__ " - failed submitting read urb, error %d", retval); goto error_exit; @@ -336,7 +336,7 @@ /* Start reading from the device */ port->read_urb->dev = port->serial->dev; - retval = usb_submit_urb(port->read_urb); + retval = usb_submit_urb(port->read_urb, GFP_KERNEL); if (retval) { err(__FUNCTION__ " - failed submitting read urb, error %d", retval); goto error_exit; diff -Nru a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c --- a/drivers/usb/storage/scsiglue.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/storage/scsiglue.c Mon Feb 4 22:08:35 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)); } diff -Nru a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c --- a/drivers/usb/storage/transport.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/storage/transport.c Mon Feb 4 22:08:35 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)); diff -Nru a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c --- a/drivers/usb/storage/usb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/storage/usb.c Mon Feb 4 22:08:35 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); diff -Nru a/drivers/usb/stv680.c b/drivers/usb/stv680.c --- a/drivers/usb/stv680.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/stv680.c Mon Feb 4 22:08:35 2002 @@ -765,7 +765,7 @@ /* Resubmit urb for new data */ urb->status = 0; urb->dev = stv680->udev; - if (usb_submit_urb (urb)) + if (usb_submit_urb (urb, GFP_KERNEL)) PDEBUG (0, "STV(e): urb burned down in video irq"); return; } /* _video_irq */ @@ -816,7 +816,7 @@ urb->timeout = PENCAM_TIMEOUT * 2; urb->transfer_flags |= USB_QUEUE_BULK; stv680->urb[i] = urb; - err = usb_submit_urb (stv680->urb[i]); + err = usb_submit_urb (stv680->urb[i], GFP_KERNEL); if (err) PDEBUG (0, "STV(e): urb burned down in start stream"); } /* i STV680_NUMSBUF */ diff -Nru a/drivers/usb/uhci.c b/drivers/usb/uhci.c --- a/drivers/usb/uhci.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/uhci.c Mon Feb 4 22:08:35 2002 @@ -1476,7 +1476,7 @@ return u; } -static int uhci_submit_urb(struct urb *urb) +static int uhci_submit_urb(struct urb *urb, int mem_flags) { int ret = -EINVAL; struct uhci *uhci; @@ -1823,11 +1823,11 @@ } struct usb_operations uhci_device_operations = { - uhci_alloc_dev, - uhci_free_dev, - uhci_get_current_frame_number, - uhci_submit_urb, - uhci_unlink_urb + allocate: uhci_alloc_dev, + deallocate: uhci_free_dev, + get_frame_number: uhci_get_current_frame_number, + submit_urb: uhci_submit_urb, + unlink_urb: uhci_unlink_urb, }; /* Virtual Root Hub */ @@ -2294,7 +2294,7 @@ } else { if (is_ring && !killed) { urb->dev = dev; - uhci_submit_urb(urb); + uhci_submit_urb(urb, GFP_KERNEL); } else { /* We decrement the usage count after we're done */ /* with everything */ diff -Nru a/drivers/usb/usb-ohci.c b/drivers/usb/usb-ohci.c --- a/drivers/usb/usb-ohci.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usb-ohci.c Mon Feb 4 22:08:35 2002 @@ -532,7 +532,7 @@ /* get a transfer request */ -static int sohci_submit_urb (struct urb * urb) +static int sohci_submit_urb (struct urb * urb, int mem_flags) { ohci_t * ohci; ed_t * ed; @@ -542,7 +542,6 @@ int i, size = 0; unsigned long flags; int bustime = 0; - int mem_flags = ALLOC_FLAGS; if (!urb->dev || !urb->dev->bus) return -ENODEV; @@ -612,8 +611,7 @@ } /* allocate the private part of the URB */ - urb_priv = kmalloc (sizeof (urb_priv_t) + size * sizeof (td_t *), - in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); + urb_priv = kmalloc (sizeof (urb_priv_t) + size * sizeof (td_t *), mem_flags); if (!urb_priv) { usb_dec_dev_use (urb->dev); return -ENOMEM; @@ -919,11 +917,11 @@ /*-------------------------------------------------------------------------*/ struct usb_operations sohci_device_operations = { - sohci_alloc_dev, - sohci_free_dev, - sohci_get_current_frame_number, - sohci_submit_urb, - sohci_unlink_urb + allocate: sohci_alloc_dev, + deallocate: sohci_free_dev, + get_frame_number: sohci_get_current_frame_number, + submit_urb: sohci_submit_urb, + unlink_urb: sohci_unlink_urb, }; /*-------------------------------------------------------------------------* diff -Nru a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c --- a/drivers/usb/usb-skeleton.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usb-skeleton.c Mon Feb 4 22:08:35 2002 @@ -431,7 +431,9 @@ skel_write_bulk_callback, dev); /* send the data out the bulk port */ - retval = usb_submit_urb(dev->write_urb); + /* a character device write uses GFP_KERNEL, + unless a spinlock is held */ + retval = usb_submit_urb(dev->write_urb, GFP_KERNEL); if (retval) { err(__FUNCTION__ " - failed submitting write urb, error %d", retval); diff -Nru a/drivers/usb/usb-uhci.c b/drivers/usb/usb-uhci.c --- a/drivers/usb/usb-uhci.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usb-uhci.c Mon Feb 4 22:08:35 2002 @@ -87,7 +87,6 @@ #endif #define SLAB_FLAG (in_interrupt ()? SLAB_ATOMIC : SLAB_KERNEL) -#define KMALLOC_FLAG (in_interrupt ()? GFP_ATOMIC : GFP_KERNEL) /* CONFIG_USB_UHCI_HIGH_BANDWITH turns on Full Speed Bandwidth * Reclamation: feature that puts loop on descriptor loop when @@ -1502,7 +1501,7 @@ return 0; } /*-------------------------------------------------------------------*/ -_static int uhci_submit_iso_urb (struct urb *urb) +_static int uhci_submit_iso_urb (struct urb *urb, int mem_flags) { uhci_t *s = (uhci_t*) urb->dev->bus->hcpriv; urb_priv_t *urb_priv = urb->hcpriv; @@ -1522,7 +1521,7 @@ if (ret) goto err; - tdm = (uhci_desc_t **) kmalloc (urb->number_of_packets * sizeof (uhci_desc_t*), KMALLOC_FLAG); + tdm = (uhci_desc_t **) kmalloc (urb->number_of_packets * sizeof (uhci_desc_t*), mem_flags); if (!tdm) { ret = -ENOMEM; @@ -1619,7 +1618,7 @@ return 0; } /*-------------------------------------------------------------------*/ -_static int uhci_submit_urb (struct urb *urb) +_static int uhci_submit_urb (struct urb *urb, int mem_flags) { uhci_t *s; urb_priv_t *urb_priv; @@ -1676,7 +1675,7 @@ #ifdef DEBUG_SLAB urb_priv = kmem_cache_alloc(urb_priv_kmem, SLAB_FLAG); #else - urb_priv = kmalloc (sizeof (urb_priv_t), KMALLOC_FLAG); + urb_priv = kmalloc (sizeof (urb_priv_t), mem_flags); #endif if (!urb_priv) { usb_dec_dev_use (urb->dev); @@ -1729,12 +1728,12 @@ if (bustime < 0) ret = bustime; else { - ret = uhci_submit_iso_urb(urb); + ret = uhci_submit_iso_urb(urb, mem_flags); if (ret == 0) usb_claim_bandwidth (urb->dev, urb, bustime, 1); } } else { /* bandwidth is already set */ - ret = uhci_submit_iso_urb(urb); + ret = uhci_submit_iso_urb(urb, mem_flags); } break; case PIPE_INTERRUPT: @@ -2279,11 +2278,11 @@ struct usb_operations uhci_device_operations = { - uhci_alloc_dev, - uhci_free_dev, - uhci_get_current_frame_number, - uhci_submit_urb, - uhci_unlink_urb + allocate: uhci_alloc_dev, + deallocate: uhci_free_dev, + get_frame_number: uhci_get_current_frame_number, + submit_urb: uhci_submit_urb, + unlink_urb: uhci_unlink_urb, }; _static void correct_data_toggles(struct urb *urb) @@ -2697,7 +2696,10 @@ spin_unlock(&s->urb_list_lock); - ret_submit=uhci_submit_urb(next_urb); + // FIXME!!! + // We need to know the real state, so + // GFP_ATOMIC is probably not correct + ret_submit=uhci_submit_urb(next_urb, GFP_ATOMIC); spin_lock(&s->urb_list_lock); if (ret_submit) @@ -2721,7 +2723,10 @@ // Re-submit the URB if ring-linked if (is_ring && !was_unlinked && !contains_killed) { urb->dev=usb_dev; - uhci_submit_urb (urb); + // FIXME!!! + // We need to know the real state, so + // GFP_ATOMIC is probably not correct + uhci_submit_urb (urb, GFP_ATOMIC); } spin_lock(&s->urb_list_lock); } diff -Nru a/drivers/usb/usb.c b/drivers/usb/usb.c --- a/drivers/usb/usb.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usb.c Mon Feb 4 22:08:35 2002 @@ -1148,6 +1148,7 @@ /** * usb_submit_urb - asynchronously issue a transfer request for an endpoint * @urb: pointer to the urb describing the request + * @mem_flags: the type of memory to allocate, see kmalloc() for a list of valid options for this. * * This submits a transfer request, and transfers control of the URB * describing that request to the USB subsystem. Request completion will @@ -1197,12 +1198,49 @@ * * If the USB subsystem can't reserve sufficient bandwidth to perform * the periodic request, and bandwidth reservation is being done for - * this controller, submitting such a periodic request will fail. + * this controller, submitting such a periodic request will fail. + * + * Memory Flags: + * + * General rules for how to decide which mem_flags to use: + * + * Basically the rules are the same as for kmalloc. There are four + * different possible values; GFP_KERNEL, GFP_NOFS, GFP_NOIO and + * GFP_ATOMIC. + * + * GFP_NOFS is not ever used, as it has not been implemented yet. + * + * There are three situations you must use GFP_ATOMIC. + * a) you are inside a completion handler, an interrupt, bottom half, + * tasklet or timer. + * b) you are holding a spinlock or rwlock (does not apply to + * semaphores) + * c) current->state != TASK_RUNNING, this is the case only after + * you've changed it. + * + * GFP_NOIO is used in the block io path and error handling of storage + * devices. + * + * All other situations use GFP_KERNEL. + * + * Specfic rules for how to decide which mem_flags to use: + * + * - start_xmit, timeout, and receive methods of network drivers must + * use GFP_ATOMIC (spinlock) + * - queuecommand methods of scsi drivers must use GFP_ATOMIC (spinlock) + * - If you use a kernel thread with a network driver you must use + * GFP_NOIO, unless b) or c) apply + * - After you have done a down() you use GFP_KERNEL, unless b) or c) + * apply or your are in a storage driver's block io path + * - probe and disconnect use GFP_KERNEL unless b) or c) apply + * - Changing firmware on a running storage or net device uses + * GFP_NOIO, unless b) or c) apply + * */ -int usb_submit_urb(struct urb *urb) +int usb_submit_urb(struct urb *urb, int mem_flags) { if (urb && urb->dev && urb->dev->bus && urb->dev->bus->op) - return urb->dev->bus->op->submit_urb(urb); + return urb->dev->bus->op->submit_urb(urb, mem_flags); else return -ENODEV; } @@ -1272,7 +1310,7 @@ add_wait_queue(&awd.wqh, &wait); urb->context = &awd; - status = usb_submit_urb(urb); + status = usb_submit_urb(urb, GFP_KERNEL); if (status) { // something went wrong usb_free_urb(urb); diff -Nru a/drivers/usb/usbkbd.c b/drivers/usb/usbkbd.c --- a/drivers/usb/usbkbd.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usbkbd.c Mon Feb 4 22:08:35 2002 @@ -129,7 +129,7 @@ kbd->leds = kbd->newleds; kbd->led->dev = kbd->usbdev; - if (usb_submit_urb(kbd->led)) + if (usb_submit_urb(kbd->led, GFP_KERNEL)) err("usb_submit_urb(leds) failed"); return 0; @@ -147,7 +147,7 @@ kbd->leds = kbd->newleds; kbd->led->dev = kbd->usbdev; - if (usb_submit_urb(kbd->led)) + if (usb_submit_urb(kbd->led, GFP_KERNEL)) err("usb_submit_urb(leds) failed"); } @@ -159,7 +159,7 @@ return 0; kbd->irq->dev = kbd->usbdev; - if (usb_submit_urb(kbd->irq)) + if (usb_submit_urb(kbd->irq, GFP_KERNEL)) return -EIO; return 0; diff -Nru a/drivers/usb/usbmouse.c b/drivers/usb/usbmouse.c --- a/drivers/usb/usbmouse.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usbmouse.c Mon Feb 4 22:08:35 2002 @@ -85,7 +85,7 @@ return 0; mouse->irq->dev = mouse->usbdev; - if (usb_submit_urb(mouse->irq)) + if (usb_submit_urb(mouse->irq, GFP_KERNEL)) return -EIO; return 0; diff -Nru a/drivers/usb/usbnet.c b/drivers/usb/usbnet.c --- a/drivers/usb/usbnet.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usbnet.c Mon Feb 4 22:08:35 2002 @@ -373,7 +373,7 @@ // issue usb interrupt read if (priv && priv->irq_urb) { // submit urb - if ((retval = usb_submit_urb (priv->irq_urb)) != 0) + if ((retval = usb_submit_urb (priv->irq_urb, GFP_KERNEL)) != 0) dbg ("gl_interrupt_read: submit fail - %X...", retval); else dbg ("gl_interrupt_read: submit success..."); @@ -1281,7 +1281,7 @@ spin_lock_irqsave (&dev->rxq.lock, lockflags); if (netif_running (&dev->net)) { - if ((retval = usb_submit_urb (urb)) != 0) { + if ((retval = usb_submit_urb (urb, GFP_KERNEL)) != 0) { dbg ("%s rx submit, %d", dev->net.name, retval); tasklet_schedule (&dev->bh); } else { @@ -1642,7 +1642,7 @@ #endif /* CONFIG_USB_NET1080 */ netif_stop_queue (net); - if ((retval = usb_submit_urb (urb)) != 0) { + if ((retval = usb_submit_urb (urb, GFP_KERNEL)) != 0) { netif_start_queue (net); dbg ("%s tx: submit urb err %d", net->name, retval); } else { diff -Nru a/drivers/usb/usbvideo.c b/drivers/usb/usbvideo.c --- a/drivers/usb/usbvideo.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/usbvideo.c Mon Feb 4 22:08:35 2002 @@ -1916,7 +1916,7 @@ /* Submit all URBs */ for (i=0; i < USBVIDEO_NUMSBUF; i++) { - errFlag = usb_submit_urb(uvd->sbuf[i].urb); + errFlag = usb_submit_urb(uvd->sbuf[i].urb, GFP_KERNEL); if (errFlag) err("%s: usb_submit_isoc(%d) ret %d", proc, i, errFlag); } diff -Nru a/drivers/usb/vicam.c b/drivers/usb/vicam.c --- a/drivers/usb/vicam.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/vicam.c Mon Feb 4 22:08:35 2002 @@ -350,7 +350,7 @@ synchronize(vicam); mdelay(10); vicam_parameters(vicam); - printk("Submiting urb: %d\n", usb_submit_urb(vicam->readurb)); + printk(KERN_DEBUG "Submiting urb: %d\n", usb_submit_urb(vicam->readurb, GFP_KERNEL)); #endif } @@ -765,7 +765,7 @@ memcpy(vicam->fbuf, buf+64, 0x1e480); if (!change_pending) { - if (usb_submit_urb(urb)) + if (usb_submit_urb(urb, GFP_ATOMIC)) dbg("failed resubmitting read urb"); } else { change_pending = 0; @@ -849,7 +849,7 @@ FILL_BULK_URB(vicam->readurb, vicam->udev, usb_rcvbulkpipe(vicam->udev, 0x81), buf, 0x1e480, vicam_bulk, vicam); - printk("Submiting urb: %d\n", usb_submit_urb(vicam->readurb)); + printk(KERN_DEBUG "Submiting urb: %d\n", usb_submit_urb(vicam->readurb, GFP_KERNEL)); return 0; error: diff -Nru a/drivers/usb/wacom.c b/drivers/usb/wacom.c --- a/drivers/usb/wacom.c Mon Feb 4 22:08:35 2002 +++ b/drivers/usb/wacom.c Mon Feb 4 22:08:35 2002 @@ -336,7 +336,7 @@ return 0; wacom->irq->dev = wacom->usbdev; - if (usb_submit_urb(wacom->irq)) + if (usb_submit_urb(wacom->irq, GFP_KERNEL)) return -EIO; return 0; diff -Nru a/include/linux/usb.h b/include/linux/usb.h --- a/include/linux/usb.h Mon Feb 4 22:08:35 2002 +++ b/include/linux/usb.h Mon Feb 4 22:08:35 2002 @@ -859,7 +859,7 @@ extern void usb_free_urb(struct urb *urb); #define usb_put_urb usb_free_urb extern struct urb *usb_get_urb(struct urb *urb); -extern int usb_submit_urb(struct urb *urb); +extern int usb_submit_urb(struct urb *urb, int mem_flags); extern int usb_unlink_urb(struct urb *urb); /*-------------------------------------------------------------------* @@ -908,7 +908,7 @@ int (*allocate)(struct usb_device *); int (*deallocate)(struct usb_device *); int (*get_frame_number) (struct usb_device *usb_dev); - int (*submit_urb) (struct urb *urb); + int (*submit_urb) (struct urb *urb, int mem_flags); int (*unlink_urb) (struct urb *urb); };