Skip to content

Commit fc43fb6

Browse files
pskrgagmarckleinebudde
authored andcommitted
can: mcba_usb_start(): add missing urb->transfer_dma initialization
Yasushi reported, that his Microchip CAN Analyzer stopped working since commit 91c0255 ("can: mcba_usb: fix memory leak in mcba_usb"). The problem was in missing urb->transfer_dma initialization. In my previous patch to this driver I refactored mcba_usb_start() code to avoid leaking usb coherent buffers. To archive it, I passed local stack variable to usb_alloc_coherent() and then saved it to private array to correctly free all coherent buffers on ->close() call. But I forgot to initialize urb->transfer_dma with variable passed to usb_alloc_coherent(). All of this was causing device to not work, since dma addr 0 is not valid and following log can be found on bug report page, which points exactly to problem described above. | DMAR: [DMA Write] Request device [00:14.0] PASID ffffffff fault addr 0 [fault reason 05] PTE Write access is not set Fixes: 91c0255 ("can: mcba_usb: fix memory leak in mcba_usb") Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990850 Link: https://lore.kernel.org/r/[email protected] Cc: linux-stable <[email protected]> Reported-by: Yasushi SHOJI <[email protected]> Signed-off-by: Pavel Skripkin <[email protected]> Tested-by: Yasushi SHOJI <[email protected]> [mkl: fixed typos in commit message - thanks Yasushi SHOJI] Signed-off-by: Marc Kleine-Budde <[email protected]>
1 parent f6b3c78 commit fc43fb6

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/net/can/usb/mcba_usb.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,8 @@ static int mcba_usb_start(struct mcba_priv *priv)
653653
break;
654654
}
655655

656+
urb->transfer_dma = buf_dma;
657+
656658
usb_fill_bulk_urb(urb, priv->udev,
657659
usb_rcvbulkpipe(priv->udev, MCBA_USB_EP_IN),
658660
buf, MCBA_USB_RX_BUFF_SIZE,

0 commit comments

Comments
 (0)