diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c index 2192a28..4c45642 100644 --- a/drivers/usb/dwc2/hcd.c +++ b/drivers/usb/dwc2/hcd.c @@ -2503,12 +2503,27 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags) { void *kmalloc_ptr; size_t kmalloc_size; + struct usb_host_endpoint *ep = urb->ep; + int maxp = usb_endpoint_maxp(&ep->desc); if (urb->num_sgs || urb->sg || - urb->transfer_buffer_length == 0 || - !((uintptr_t)urb->transfer_buffer & (DWC2_USB_DMA_ALIGN - 1))) + urb->transfer_buffer_length == 0) return 0; + if (!((uintptr_t)urb->transfer_buffer & (DWC2_USB_DMA_ALIGN - 1))) { + //[ 8906.761517] EARLY RET len:13 out:0 in:1 type:3 mx:512 + //[ 8908.776755] EARLY RET len:13 out:0 in:1 type:3 mx:512 + if (urb->transfer_buffer_length == 13) { + printk("EARLY RET len:%u out:%d in:%d type:%d mx:%d ", + urb->transfer_buffer_length, + usb_urb_dir_out(urb) ? 1 : 0, + usb_urb_dir_in(urb) ? 1 : 0, + usb_pipetype(urb->pipe), + maxp); + return 0; + } + } + /* * Allocate a buffer with enough padding for original transfer_buffer * pointer. This allocation is guaranteed to be aligned properly for