usb: core: hcd: use map_urb_for_dma for single step set feature urb
authorLi Jun <jun.li@nxp.com>
Sat, 8 May 2021 05:33:59 +0000 (13:33 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 May 2021 14:02:30 +0000 (16:02 +0200)
Use map_urb_for_dma() to improve the dma map code for single step
set feature request urb in test mode.

Signed-off-by: Li Jun <jun.li@nxp.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/1620452039-11694-3-git-send-email-jun.li@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/hcd.c

index d7eb9f1..0f8b7c9 100644 (file)
@@ -2159,16 +2159,12 @@ static struct urb *request_single_step_set_feature_urb(
        usb_get_urb(urb);
        atomic_inc(&urb->use_count);
        atomic_inc(&urb->dev->urbnum);
-       urb->setup_dma = dma_map_single(
-                       hcd->self.sysdev,
-                       urb->setup_packet,
-                       sizeof(struct usb_ctrlrequest),
-                       DMA_TO_DEVICE);
-       urb->transfer_dma = dma_map_single(
-                       hcd->self.sysdev,
-                       urb->transfer_buffer,
-                       urb->transfer_buffer_length,
-                       DMA_FROM_DEVICE);
+       if (map_urb_for_dma(hcd, urb, GFP_KERNEL)) {
+               usb_put_urb(urb);
+               usb_free_urb(urb);
+               return NULL;
+       }
+
        urb->context = done;
        return urb;
 }