diff options
Diffstat (limited to 'drivers/usb/core/urb.c')
-rw-r--r-- | drivers/usb/core/urb.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index 2532a0917f8c..a760e46871c5 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c | |||
@@ -333,9 +333,12 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags) | |||
333 | is_out = usb_endpoint_dir_out(&ep->desc); | 333 | is_out = usb_endpoint_dir_out(&ep->desc); |
334 | } | 334 | } |
335 | 335 | ||
336 | /* Cache the direction for later use */ | 336 | /* Clear the internal flags and cache the direction for later use */ |
337 | urb->transfer_flags = (urb->transfer_flags & ~URB_DIR_MASK) | | 337 | urb->transfer_flags &= ~(URB_DIR_MASK | URB_DMA_MAP_SINGLE | |
338 | (is_out ? URB_DIR_OUT : URB_DIR_IN); | 338 | URB_DMA_MAP_PAGE | URB_DMA_MAP_SG | URB_MAP_LOCAL | |
339 | URB_SETUP_MAP_SINGLE | URB_SETUP_MAP_LOCAL | | ||
340 | URB_DMA_SG_COMBINED); | ||
341 | urb->transfer_flags |= (is_out ? URB_DIR_OUT : URB_DIR_IN); | ||
339 | 342 | ||
340 | if (xfertype != USB_ENDPOINT_XFER_CONTROL && | 343 | if (xfertype != USB_ENDPOINT_XFER_CONTROL && |
341 | dev->state < USB_STATE_CONFIGURED) | 344 | dev->state < USB_STATE_CONFIGURED) |