FAILED: patch "[PATCH] can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory" failed to apply to 5.15-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 7352e1d5932a0e777e39fa4b619801191f57e603
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026012023-ranged-machinist-edb4@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 7352e1d5932a0e777e39fa4b619801191f57e603 Mon Sep 17 00:00:00 2001
From: Marc Kleine-Budde <[email protected]>
Date: Tue, 23 Dec 2025 21:21:39 +0100
Subject: [PATCH] can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory
leak
In gs_can_open(), the URBs for USB-in transfers are allocated, added to the parent->rx_submitted anchor and submitted. In the complete callback gs_usb_receive_bulk_callback(), the URB is processed and resubmitted. In gs_can_close() the URBs are freed by calling usb_kill_anchored_urbs(parent->rx_submitted).
However, this does not take into account that the USB framework unanchors the URB before the complete function is called. This means that once an in-URB has been completed, it is no longer anchored and is ultimately not released in gs_can_close().
Fix the memory leak by anchoring the URB in the gs_usb_receive_bulk_callback() to the parent->rx_submitted anchor.
drivers/net/can/usb/gs_usb.c +2 -0
@@ -751,6 +751,8 @@ static void gs_usb_receive_bulk_callback(struct urb *urb) hf, parent->hf_size_rx, gs_usb_receive_bulk_callback, parent); +usb_anchor_urb (urb, &parent->rx_submitted); + rc =usb_submit_urb (urb,GFP_ATOMIC );/* USB failure take down all interfaces */
Marc Kleine-Budde
maintainerPATCH 1/1 can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak
In gs_can_open(), the URBs for USB-in transfers are allocated, added to the parent->rx_submitted anchor and submitted. In the complete callback gs_usb_receive_bulk_callback(), the URB is processed and resubmitted. In gs_can_close() the URBs are freed by calling usb_kill_anchored_urbs(parent->rx_submitted).
However, this does not take into account that the USB framework unanchors the URB before the complete function is called. This means that once an in-URB has been completed, it is no longer anchored and is ultimately not released in gs_can_close().
Fix the memory leak by anchoring the URB in the gs_usb_receive_bulk_callback() to the parent->rx_submitted anchor.
--- drivers/net/can/usb/gs_usb.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/can/usb/gs_usb.c +2 -0
@@ -402,6 +402,8 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)usbcan ); +usb_anchor_urb (urb, &parent->rx_submitted); + rc =usb_submit_urb (urb,GFP_ATOMIC );/* USB failure take down all interfaces */
Signature · 1 line
2.51.0
Re: [PATCH 5.15.y] can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak
Quoted 28 lines · Marc Kleine-Budde
In
gs_can_open(), the URBs for USB-in transfers are allocated, added to theparent->rx_submittedanchor and submitted. In the complete callbackgs_usb_receive_bulk_callback(), the URB is processed and resubmitted. Ings_can_close()the URBs are freed by callingusb_kill_anchored_urbs(parent->rx_submitted).However, this does not take into account that the USB framework unanchors the URB before the complete function is called. This means that once an in-URB has been completed, it is no longer anchored and is ultimately not released in
gs_can_close().Fix the memory leak by anchoring the URB in the
gs_usb_receive_bulk_callback()to theparent->rx_submittedanchor.Fixes d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")Signed-off-by Marc Kleine-Budde <[email protected]>(cherry picked from commit 7352e1d5932a0e777e39fa4b619801191f57e603)--- drivers/net/can/usb/gs_usb.c | 2 ++ 1 file changed, 2 insertions(+)drivers/net/can/usb/gs_usb.c +0
-0
drivers/net/can/usb/gs_usb.c static void gs_usb_receive_bulk_callback(struct urb *urb) · line 406
Quoted 5 lines
drivers/net/can/usb/gs_usb.c +2
-0@@ -402,6 +402,8 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)usbcan ); +usb_anchor_urb (urb, &parent->rx_submitted); +
Breaks the build :(