]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
can: gs_usb: gs_can_open(): fix error handling
authorMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 1 Dec 2025 18:26:38 +0000 (19:26 +0100)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Wed, 10 Dec 2025 08:30:31 +0000 (09:30 +0100)
Commit 2603be9e8167 ("can: gs_usb: gs_can_open(): improve error handling")
added missing error handling to the gs_can_open() function.

The driver uses 2 USB anchors to track the allocated URBs: the TX URBs in
struct gs_can::tx_submitted for each netdev and the RX URBs in struct
gs_usb::rx_submitted for the USB device. gs_can_open() allocates the RX
URBs, while TX URBs are allocated during gs_can_start_xmit().

The cleanup in gs_can_open() kills all anchored dev->tx_submitted
URBs (which is not necessary since the netdev is not yet registered), but
misses the parent->rx_submitted URBs.

Fix the problem by killing the rx_submitted instead of the tx_submitted.

Fixes: 2603be9e8167 ("can: gs_usb: gs_can_open(): improve error handling")
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20251210-gs_usb-fix-error-handling-v1-1-d6a5a03f10bb@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/gs_usb.c

index e29e85b67fd4050a59df4711ce27eb23ca46cabc..a0233e550a5ad94000c233f131c4edbe743c3bfe 100644 (file)
@@ -1074,7 +1074,7 @@ out_usb_free_urb:
        usb_free_urb(urb);
 out_usb_kill_anchored_urbs:
        if (!parent->active_channels) {
-               usb_kill_anchored_urbs(&dev->tx_submitted);
+               usb_kill_anchored_urbs(&parent->rx_submitted);
 
                if (dev->feature & GS_CAN_FEATURE_HW_TIMESTAMP)
                        gs_usb_timestamp_stop(parent);