diff options
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/atm/cxacru.c | 2 | ||||
| -rw-r--r-- | drivers/usb/core/message.c | 4 | ||||
| -rw-r--r-- | drivers/usb/core/urb.c | 26 | ||||
| -rw-r--r-- | drivers/usb/input/hid-core.c | 6 | ||||
| -rw-r--r-- | drivers/usb/misc/auerswald.c | 3 | ||||
| -rw-r--r-- | drivers/usb/misc/sisusbvga/sisusb.c | 4 | ||||
| -rw-r--r-- | drivers/usb/misc/usbtest.c | 2 | ||||
| -rw-r--r-- | drivers/usb/net/catc.c | 2 | ||||
| -rw-r--r-- | drivers/usb/net/kaweth.c | 1 | ||||
| -rw-r--r-- | drivers/usb/net/pegasus.c | 1 | ||||
| -rw-r--r-- | drivers/usb/net/rtl8150.c | 1 | ||||
| -rw-r--r-- | drivers/usb/net/usbnet.c | 2 | ||||
| -rw-r--r-- | drivers/usb/net/zd1201.c | 1 | ||||
| -rw-r--r-- | drivers/usb/storage/transport.c | 7 |
14 files changed, 14 insertions, 48 deletions
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c index 8e184e2641cb..79861ee12a29 100644 --- a/drivers/usb/atm/cxacru.c +++ b/drivers/usb/atm/cxacru.c | |||
| @@ -715,13 +715,11 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance, | |||
| 715 | usb_dev, usb_rcvintpipe(usb_dev, CXACRU_EP_CMD), | 715 | usb_dev, usb_rcvintpipe(usb_dev, CXACRU_EP_CMD), |
| 716 | instance->rcv_buf, PAGE_SIZE, | 716 | instance->rcv_buf, PAGE_SIZE, |
| 717 | cxacru_blocking_completion, &instance->rcv_done, 1); | 717 | cxacru_blocking_completion, &instance->rcv_done, 1); |
| 718 | instance->rcv_urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 719 | 718 | ||
| 720 | usb_fill_int_urb(instance->snd_urb, | 719 | usb_fill_int_urb(instance->snd_urb, |
| 721 | usb_dev, usb_sndintpipe(usb_dev, CXACRU_EP_CMD), | 720 | usb_dev, usb_sndintpipe(usb_dev, CXACRU_EP_CMD), |
| 722 | instance->snd_buf, PAGE_SIZE, | 721 | instance->snd_buf, PAGE_SIZE, |
| 723 | cxacru_blocking_completion, &instance->snd_done, 4); | 722 | cxacru_blocking_completion, &instance->snd_done, 4); |
| 724 | instance->snd_urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 725 | 723 | ||
| 726 | init_MUTEX(&instance->cm_serialize); | 724 | init_MUTEX(&instance->cm_serialize); |
| 727 | 725 | ||
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 88d1b376f67c..74197249c245 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c | |||
| @@ -48,7 +48,6 @@ static int usb_start_wait_urb(struct urb *urb, int timeout, int* actual_length) | |||
| 48 | 48 | ||
| 49 | init_completion(&done); | 49 | init_completion(&done); |
| 50 | urb->context = &done; | 50 | urb->context = &done; |
| 51 | urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 52 | urb->actual_length = 0; | 51 | urb->actual_length = 0; |
| 53 | status = usb_submit_urb(urb, GFP_NOIO); | 52 | status = usb_submit_urb(urb, GFP_NOIO); |
| 54 | 53 | ||
| @@ -357,8 +356,7 @@ int usb_sg_init ( | |||
| 357 | if (!io->urbs) | 356 | if (!io->urbs) |
| 358 | goto nomem; | 357 | goto nomem; |
| 359 | 358 | ||
| 360 | urb_flags = URB_ASYNC_UNLINK | URB_NO_TRANSFER_DMA_MAP | 359 | urb_flags = URB_NO_TRANSFER_DMA_MAP | URB_NO_INTERRUPT; |
| 361 | | URB_NO_INTERRUPT; | ||
| 362 | if (usb_pipein (pipe)) | 360 | if (usb_pipein (pipe)) |
| 363 | urb_flags |= URB_SHORT_NOT_OK; | 361 | urb_flags |= URB_SHORT_NOT_OK; |
| 364 | 362 | ||
diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index c0feee25ff0a..c846fefb7386 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c | |||
| @@ -309,9 +309,8 @@ int usb_submit_urb(struct urb *urb, unsigned mem_flags) | |||
| 309 | unsigned int allowed; | 309 | unsigned int allowed; |
| 310 | 310 | ||
| 311 | /* enforce simple/standard policy */ | 311 | /* enforce simple/standard policy */ |
| 312 | allowed = URB_ASYNC_UNLINK; // affects later unlinks | 312 | allowed = (URB_NO_TRANSFER_DMA_MAP | URB_NO_SETUP_DMA_MAP | |
| 313 | allowed |= (URB_NO_TRANSFER_DMA_MAP | URB_NO_SETUP_DMA_MAP); | 313 | URB_NO_INTERRUPT); |
| 314 | allowed |= URB_NO_INTERRUPT; | ||
| 315 | switch (temp) { | 314 | switch (temp) { |
| 316 | case PIPE_BULK: | 315 | case PIPE_BULK: |
| 317 | if (is_out) | 316 | if (is_out) |
| @@ -400,14 +399,8 @@ int usb_submit_urb(struct urb *urb, unsigned mem_flags) | |||
| 400 | * canceled (rather than any other code) and will quickly be removed | 399 | * canceled (rather than any other code) and will quickly be removed |
| 401 | * from host controller data structures. | 400 | * from host controller data structures. |
| 402 | * | 401 | * |
| 403 | * In the past, clearing the URB_ASYNC_UNLINK transfer flag for the | 402 | * This request is always asynchronous. |
| 404 | * URB indicated that the request was synchronous. This usage is now | 403 | * Success is indicated by returning -EINPROGRESS, |
| 405 | * deprecated; if the flag is clear the call will be forwarded to | ||
| 406 | * usb_kill_urb() and the return value will be 0. In the future, drivers | ||
| 407 | * should call usb_kill_urb() directly for synchronous unlinking. | ||
| 408 | * | ||
| 409 | * When the URB_ASYNC_UNLINK transfer flag for the URB is set, this | ||
| 410 | * request is asynchronous. Success is indicated by returning -EINPROGRESS, | ||
| 411 | * at which time the URB will normally have been unlinked but not yet | 404 | * at which time the URB will normally have been unlinked but not yet |
| 412 | * given back to the device driver. When it is called, the completion | 405 | * given back to the device driver. When it is called, the completion |
| 413 | * function will see urb->status == -ECONNRESET. Failure is indicated | 406 | * function will see urb->status == -ECONNRESET. Failure is indicated |
| @@ -453,17 +446,6 @@ int usb_unlink_urb(struct urb *urb) | |||
| 453 | { | 446 | { |
| 454 | if (!urb) | 447 | if (!urb) |
| 455 | return -EINVAL; | 448 | return -EINVAL; |
| 456 | if (!(urb->transfer_flags & URB_ASYNC_UNLINK)) { | ||
| 457 | #ifdef CONFIG_DEBUG_KERNEL | ||
| 458 | if (printk_ratelimit()) { | ||
| 459 | printk(KERN_NOTICE "usb_unlink_urb() is deprecated for " | ||
| 460 | "synchronous unlinks. Use usb_kill_urb() instead.\n"); | ||
| 461 | WARN_ON(1); | ||
| 462 | } | ||
| 463 | #endif | ||
| 464 | usb_kill_urb(urb); | ||
| 465 | return 0; | ||
| 466 | } | ||
| 467 | if (!(urb->dev && urb->dev->bus && urb->dev->bus->op)) | 449 | if (!(urb->dev && urb->dev->bus && urb->dev->bus->op)) |
| 468 | return -ENODEV; | 450 | return -ENODEV; |
| 469 | return urb->dev->bus->op->unlink_urb(urb, -ECONNRESET); | 451 | return urb->dev->bus->op->unlink_urb(urb, -ECONNRESET); |
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c index 719c0316cc39..1ab95d24c5e2 100644 --- a/drivers/usb/input/hid-core.c +++ b/drivers/usb/input/hid-core.c | |||
| @@ -1688,7 +1688,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
| 1688 | usb_fill_int_urb(hid->urbin, dev, pipe, hid->inbuf, 0, | 1688 | usb_fill_int_urb(hid->urbin, dev, pipe, hid->inbuf, 0, |
| 1689 | hid_irq_in, hid, interval); | 1689 | hid_irq_in, hid, interval); |
| 1690 | hid->urbin->transfer_dma = hid->inbuf_dma; | 1690 | hid->urbin->transfer_dma = hid->inbuf_dma; |
| 1691 | hid->urbin->transfer_flags |=(URB_NO_TRANSFER_DMA_MAP | URB_ASYNC_UNLINK); | 1691 | hid->urbin->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; |
| 1692 | } else { | 1692 | } else { |
| 1693 | if (hid->urbout) | 1693 | if (hid->urbout) |
| 1694 | continue; | 1694 | continue; |
| @@ -1698,7 +1698,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
| 1698 | usb_fill_int_urb(hid->urbout, dev, pipe, hid->outbuf, 0, | 1698 | usb_fill_int_urb(hid->urbout, dev, pipe, hid->outbuf, 0, |
| 1699 | hid_irq_out, hid, interval); | 1699 | hid_irq_out, hid, interval); |
| 1700 | hid->urbout->transfer_dma = hid->outbuf_dma; | 1700 | hid->urbout->transfer_dma = hid->outbuf_dma; |
| 1701 | hid->urbout->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP | URB_ASYNC_UNLINK); | 1701 | hid->urbout->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; |
| 1702 | } | 1702 | } |
| 1703 | } | 1703 | } |
| 1704 | 1704 | ||
| @@ -1750,7 +1750,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
| 1750 | hid->ctrlbuf, 1, hid_ctrl, hid); | 1750 | hid->ctrlbuf, 1, hid_ctrl, hid); |
| 1751 | hid->urbctrl->setup_dma = hid->cr_dma; | 1751 | hid->urbctrl->setup_dma = hid->cr_dma; |
| 1752 | hid->urbctrl->transfer_dma = hid->ctrlbuf_dma; | 1752 | hid->urbctrl->transfer_dma = hid->ctrlbuf_dma; |
| 1753 | hid->urbctrl->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP | URB_NO_SETUP_DMA_MAP | URB_ASYNC_UNLINK); | 1753 | hid->urbctrl->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP | URB_NO_SETUP_DMA_MAP); |
| 1754 | 1754 | ||
| 1755 | return hid; | 1755 | return hid; |
| 1756 | 1756 | ||
diff --git a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c index 6f7994f5a714..ae4681f9f0ea 100644 --- a/drivers/usb/misc/auerswald.c +++ b/drivers/usb/misc/auerswald.c | |||
| @@ -426,7 +426,7 @@ static int auerchain_submit_urb (pauerchain_t acp, struct urb * urb) | |||
| 426 | 426 | ||
| 427 | /* cancel an urb which is submitted to the chain | 427 | /* cancel an urb which is submitted to the chain |
| 428 | the result is 0 if the urb is cancelled, or -EINPROGRESS if | 428 | the result is 0 if the urb is cancelled, or -EINPROGRESS if |
| 429 | URB_ASYNC_UNLINK is set and the function is successfully started. | 429 | the function is successfully started. |
| 430 | */ | 430 | */ |
| 431 | static int auerchain_unlink_urb (pauerchain_t acp, struct urb * urb) | 431 | static int auerchain_unlink_urb (pauerchain_t acp, struct urb * urb) |
| 432 | { | 432 | { |
| @@ -515,7 +515,6 @@ static void auerchain_unlink_all (pauerchain_t acp) | |||
| 515 | acep = acp->active; | 515 | acep = acp->active; |
| 516 | if (acep) { | 516 | if (acep) { |
| 517 | urbp = acep->urbp; | 517 | urbp = acep->urbp; |
| 518 | urbp->transfer_flags &= ~URB_ASYNC_UNLINK; | ||
| 519 | dbg ("unlink active urb"); | 518 | dbg ("unlink active urb"); |
| 520 | usb_kill_urb (urbp); | 519 | usb_kill_urb (urbp); |
| 521 | } | 520 | } |
diff --git a/drivers/usb/misc/sisusbvga/sisusb.c b/drivers/usb/misc/sisusbvga/sisusb.c index 2fd12264fd53..d63ce6c030f3 100644 --- a/drivers/usb/misc/sisusbvga/sisusb.c +++ b/drivers/usb/misc/sisusbvga/sisusb.c | |||
| @@ -229,7 +229,7 @@ sisusb_bulkout_msg(struct sisusb_usb_data *sisusb, int index, unsigned int pipe, | |||
| 229 | usb_fill_bulk_urb(urb, sisusb->sisusb_dev, pipe, data, len, | 229 | usb_fill_bulk_urb(urb, sisusb->sisusb_dev, pipe, data, len, |
| 230 | sisusb_bulk_completeout, &sisusb->urbout_context[index]); | 230 | sisusb_bulk_completeout, &sisusb->urbout_context[index]); |
| 231 | 231 | ||
| 232 | urb->transfer_flags |= (tflags | URB_ASYNC_UNLINK); | 232 | urb->transfer_flags |= tflags; |
| 233 | urb->actual_length = 0; | 233 | urb->actual_length = 0; |
| 234 | 234 | ||
| 235 | if ((urb->transfer_dma = transfer_dma)) | 235 | if ((urb->transfer_dma = transfer_dma)) |
| @@ -295,7 +295,7 @@ sisusb_bulkin_msg(struct sisusb_usb_data *sisusb, unsigned int pipe, void *data, | |||
| 295 | usb_fill_bulk_urb(urb, sisusb->sisusb_dev, pipe, data, len, | 295 | usb_fill_bulk_urb(urb, sisusb->sisusb_dev, pipe, data, len, |
| 296 | sisusb_bulk_completein, sisusb); | 296 | sisusb_bulk_completein, sisusb); |
| 297 | 297 | ||
| 298 | urb->transfer_flags |= (tflags | URB_ASYNC_UNLINK); | 298 | urb->transfer_flags |= tflags; |
| 299 | urb->actual_length = 0; | 299 | urb->actual_length = 0; |
| 300 | 300 | ||
| 301 | if ((urb->transfer_dma = transfer_dma)) | 301 | if ((urb->transfer_dma = transfer_dma)) |
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index fd7fb98e4b20..54799eb0bc60 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c | |||
| @@ -986,7 +986,6 @@ test_ctrl_queue (struct usbtest_dev *dev, struct usbtest_param *param) | |||
| 986 | 986 | ||
| 987 | u->context = &context; | 987 | u->context = &context; |
| 988 | u->complete = ctrl_complete; | 988 | u->complete = ctrl_complete; |
| 989 | u->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 990 | } | 989 | } |
| 991 | 990 | ||
| 992 | /* queue the urbs */ | 991 | /* queue the urbs */ |
| @@ -1052,7 +1051,6 @@ static int unlink1 (struct usbtest_dev *dev, int pipe, int size, int async) | |||
| 1052 | urb = simple_alloc_urb (testdev_to_usbdev (dev), pipe, size); | 1051 | urb = simple_alloc_urb (testdev_to_usbdev (dev), pipe, size); |
| 1053 | if (!urb) | 1052 | if (!urb) |
| 1054 | return -ENOMEM; | 1053 | return -ENOMEM; |
| 1055 | urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 1056 | urb->context = &completion; | 1054 | urb->context = &completion; |
| 1057 | urb->complete = unlink1_callback; | 1055 | urb->complete = unlink1_callback; |
| 1058 | 1056 | ||
diff --git a/drivers/usb/net/catc.c b/drivers/usb/net/catc.c index c8be912f24e1..37ef365a2472 100644 --- a/drivers/usb/net/catc.c +++ b/drivers/usb/net/catc.c | |||
| @@ -383,7 +383,6 @@ static void catc_tx_done(struct urb *urb, struct pt_regs *regs) | |||
| 383 | 383 | ||
| 384 | if (urb->status == -ECONNRESET) { | 384 | if (urb->status == -ECONNRESET) { |
| 385 | dbg("Tx Reset."); | 385 | dbg("Tx Reset."); |
| 386 | urb->transfer_flags &= ~URB_ASYNC_UNLINK; | ||
| 387 | urb->status = 0; | 386 | urb->status = 0; |
| 388 | catc->netdev->trans_start = jiffies; | 387 | catc->netdev->trans_start = jiffies; |
| 389 | catc->stats.tx_errors++; | 388 | catc->stats.tx_errors++; |
| @@ -445,7 +444,6 @@ static void catc_tx_timeout(struct net_device *netdev) | |||
| 445 | struct catc *catc = netdev_priv(netdev); | 444 | struct catc *catc = netdev_priv(netdev); |
| 446 | 445 | ||
| 447 | warn("Transmit timed out."); | 446 | warn("Transmit timed out."); |
| 448 | catc->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 449 | usb_unlink_urb(catc->tx_urb); | 447 | usb_unlink_urb(catc->tx_urb); |
| 450 | } | 448 | } |
| 451 | 449 | ||
diff --git a/drivers/usb/net/kaweth.c b/drivers/usb/net/kaweth.c index 7ffa99b9760f..e04b0ce3611a 100644 --- a/drivers/usb/net/kaweth.c +++ b/drivers/usb/net/kaweth.c | |||
| @@ -787,7 +787,6 @@ static int kaweth_start_xmit(struct sk_buff *skb, struct net_device *net) | |||
| 787 | kaweth_usb_transmit_complete, | 787 | kaweth_usb_transmit_complete, |
| 788 | kaweth); | 788 | kaweth); |
| 789 | kaweth->end = 0; | 789 | kaweth->end = 0; |
| 790 | kaweth->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 791 | 790 | ||
| 792 | if((res = usb_submit_urb(kaweth->tx_urb, GFP_ATOMIC))) | 791 | if((res = usb_submit_urb(kaweth->tx_urb, GFP_ATOMIC))) |
| 793 | { | 792 | { |
diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c index fcd6d3ccef44..7484d34780fc 100644 --- a/drivers/usb/net/pegasus.c +++ b/drivers/usb/net/pegasus.c | |||
| @@ -825,7 +825,6 @@ static void pegasus_tx_timeout(struct net_device *net) | |||
| 825 | pegasus_t *pegasus = netdev_priv(net); | 825 | pegasus_t *pegasus = netdev_priv(net); |
| 826 | if (netif_msg_timer(pegasus)) | 826 | if (netif_msg_timer(pegasus)) |
| 827 | printk(KERN_WARNING "%s: tx timeout\n", net->name); | 827 | printk(KERN_WARNING "%s: tx timeout\n", net->name); |
| 828 | pegasus->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 829 | usb_unlink_urb(pegasus->tx_urb); | 828 | usb_unlink_urb(pegasus->tx_urb); |
| 830 | pegasus->stats.tx_errors++; | 829 | pegasus->stats.tx_errors++; |
| 831 | } | 830 | } |
diff --git a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c index 59ab40ebb394..c3d4e3589e30 100644 --- a/drivers/usb/net/rtl8150.c +++ b/drivers/usb/net/rtl8150.c | |||
| @@ -653,7 +653,6 @@ static void rtl8150_tx_timeout(struct net_device *netdev) | |||
| 653 | { | 653 | { |
| 654 | rtl8150_t *dev = netdev_priv(netdev); | 654 | rtl8150_t *dev = netdev_priv(netdev); |
| 655 | warn("%s: Tx timeout.", netdev->name); | 655 | warn("%s: Tx timeout.", netdev->name); |
| 656 | dev->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 657 | usb_unlink_urb(dev->tx_urb); | 656 | usb_unlink_urb(dev->tx_urb); |
| 658 | dev->stats.tx_errors++; | 657 | dev->stats.tx_errors++; |
| 659 | } | 658 | } |
diff --git a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c index 4682696450db..3c6eef4168e5 100644 --- a/drivers/usb/net/usbnet.c +++ b/drivers/usb/net/usbnet.c | |||
| @@ -2987,7 +2987,6 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, unsigned flags) | |||
| 2987 | 2987 | ||
| 2988 | usb_fill_bulk_urb (urb, dev->udev, dev->in, | 2988 | usb_fill_bulk_urb (urb, dev->udev, dev->in, |
| 2989 | skb->data, size, rx_complete, skb); | 2989 | skb->data, size, rx_complete, skb); |
| 2990 | urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 2991 | 2990 | ||
| 2992 | spin_lock_irqsave (&dev->rxq.lock, lockflags); | 2991 | spin_lock_irqsave (&dev->rxq.lock, lockflags); |
| 2993 | 2992 | ||
| @@ -3561,7 +3560,6 @@ static int usbnet_start_xmit (struct sk_buff *skb, struct net_device *net) | |||
| 3561 | 3560 | ||
| 3562 | usb_fill_bulk_urb (urb, dev->udev, dev->out, | 3561 | usb_fill_bulk_urb (urb, dev->udev, dev->out, |
| 3563 | skb->data, skb->len, tx_complete, skb); | 3562 | skb->data, skb->len, tx_complete, skb); |
| 3564 | urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 3565 | 3563 | ||
| 3566 | /* don't assume the hardware handles USB_ZERO_PACKET | 3564 | /* don't assume the hardware handles USB_ZERO_PACKET |
| 3567 | * NOTE: strictly conforming cdc-ether devices should expect | 3565 | * NOTE: strictly conforming cdc-ether devices should expect |
diff --git a/drivers/usb/net/zd1201.c b/drivers/usb/net/zd1201.c index fc013978837e..c4e479ee926a 100644 --- a/drivers/usb/net/zd1201.c +++ b/drivers/usb/net/zd1201.c | |||
| @@ -847,7 +847,6 @@ static void zd1201_tx_timeout(struct net_device *dev) | |||
| 847 | return; | 847 | return; |
| 848 | dev_warn(&zd->usb->dev, "%s: TX timeout, shooting down urb\n", | 848 | dev_warn(&zd->usb->dev, "%s: TX timeout, shooting down urb\n", |
| 849 | dev->name); | 849 | dev->name); |
| 850 | zd->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; | ||
| 851 | usb_unlink_urb(zd->tx_urb); | 850 | usb_unlink_urb(zd->tx_urb); |
| 852 | zd->stats.tx_errors++; | 851 | zd->stats.tx_errors++; |
| 853 | /* Restart the timeout to quiet the watchdog: */ | 852 | /* Restart the timeout to quiet the watchdog: */ |
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c index e42875152c34..c1ba5301ebfc 100644 --- a/drivers/usb/storage/transport.c +++ b/drivers/usb/storage/transport.c | |||
| @@ -96,8 +96,8 @@ | |||
| 96 | * or before the URB_ACTIVE bit was set. If so, it's essential to cancel | 96 | * or before the URB_ACTIVE bit was set. If so, it's essential to cancel |
| 97 | * the URB if it hasn't been cancelled already (i.e., if the URB_ACTIVE bit | 97 | * the URB if it hasn't been cancelled already (i.e., if the URB_ACTIVE bit |
| 98 | * is still set). Either way, the function must then wait for the URB to | 98 | * is still set). Either way, the function must then wait for the URB to |
| 99 | * finish. Note that because the URB_ASYNC_UNLINK flag is set, the URB can | 99 | * finish. Note that the URB can still be in progress even after a call to |
| 100 | * still be in progress even after a call to usb_unlink_urb() returns. | 100 | * usb_unlink_urb() returns. |
| 101 | * | 101 | * |
| 102 | * The idea is that (1) once the ABORTING or DISCONNECTING bit is set, | 102 | * The idea is that (1) once the ABORTING or DISCONNECTING bit is set, |
| 103 | * either the stop_transport() function or the submitting function | 103 | * either the stop_transport() function or the submitting function |
| @@ -158,8 +158,7 @@ static int usb_stor_msg_common(struct us_data *us, int timeout) | |||
| 158 | * hasn't been mapped for DMA. Yes, this is clunky, but it's | 158 | * hasn't been mapped for DMA. Yes, this is clunky, but it's |
| 159 | * easier than always having the caller tell us whether the | 159 | * easier than always having the caller tell us whether the |
| 160 | * transfer buffer has already been mapped. */ | 160 | * transfer buffer has already been mapped. */ |
| 161 | us->current_urb->transfer_flags = | 161 | us->current_urb->transfer_flags = URB_NO_SETUP_DMA_MAP; |
| 162 | URB_ASYNC_UNLINK | URB_NO_SETUP_DMA_MAP; | ||
| 163 | if (us->current_urb->transfer_buffer == us->iobuf) | 162 | if (us->current_urb->transfer_buffer == us->iobuf) |
| 164 | us->current_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; | 163 | us->current_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; |
| 165 | us->current_urb->transfer_dma = us->iobuf_dma; | 164 | us->current_urb->transfer_dma = us->iobuf_dma; |
