linux/drivers/net/can
Marc Kleine-Budde 07e9373739 can: usb_8dev: usb_8dev_read_bulk_callback(): fix URB memory leak
commit f7a980b3b8 upstream.

Fix similar memory leak as in commit 7352e1d593 ("can: gs_usb:
gs_usb_receive_bulk_callback(): fix URB memory leak").

In usb_8dev_open() -> usb_8dev_start(), the URBs for USB-in transfers are
allocated, added to the priv->rx_submitted anchor and submitted. In the
complete callback usb_8dev_read_bulk_callback(), the URBs are processed and
resubmitted. In usb_8dev_close() -> unlink_all_urbs() the URBs are freed by
calling usb_kill_anchored_urbs(&priv->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 usb_kill_anchored_urbs().

Fix the memory leak by anchoring the URB in the
usb_8dev_read_bulk_callback() to the priv->rx_submitted anchor.

Fixes: 0024d8ad16 ("can: usb_8dev: Add support for USB2CAN interface from 8 devices")
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260116-can_usb-fix-memory-leak-v2-5-4b8cb2915571@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-01-30 10:32:27 +01:00
..
c_can can: c_can: Use syscon_regmap_lookup_by_phandle_args 2025-02-19 10:44:21 +01:00
cc770 can: {cc770,sja1000}_isa: allow building on x86_64 2024-11-04 17:46:06 +01:00
ctucanfd can: ctucanfd: fix SSP_SRC in cases when bit-rate is higher than 1 MBit. 2026-01-23 11:21:24 +01:00
dev can: netlink: can_changelink(): allow disabling of automatic restart 2025-10-20 17:20:12 +02:00
esd can: esd: acc_start_xmit(): use can_dev_dropped_skb() instead of can_dropped_invalid_skb() 2025-10-20 17:17:59 +02:00
flexcan can: dev: add struct data_bittiming_params to group FD parameters 2025-05-21 14:33:28 +02:00
ifi_canfd can: dev: add struct data_bittiming_params to group FD parameters 2025-05-21 14:33:28 +02:00
kvaser_pciefd can: kvaser_pciefd: Add devlink port support 2025-07-25 17:55:46 +02:00
m_can can: m_can: replace Dong Aisheng's old email address 2025-10-09 10:25:53 +02:00
mscan can: Switch back to struct platform_driver::remove() 2024-09-11 09:37:16 +02:00
peak_canfd can: peak: Modification of references to email accounts being deleted 2025-09-13 19:04:57 +02:00
rcar can: rcar_canfd: Fix CAN-FD mode as default 2025-11-26 16:26:41 +01:00
rockchip can: rockchip-canfd: rkcanfd_start_xmit(): use can_dev_dropped_skb() instead of can_dropped_invalid_skb() 2025-10-20 17:18:04 +02:00
sja1000 can: sja1000: fix max irq loop handling 2025-11-16 16:34:41 +01:00
slcan can: slcan: allow reception of short error messages 2025-05-21 10:12:05 +02:00
softing can: Switch back to struct platform_driver::remove() 2024-09-11 09:37:16 +02:00
spi Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2025-09-25 11:00:59 -07:00
usb can: usb_8dev: usb_8dev_read_bulk_callback(): fix URB memory leak 2026-01-30 10:32:27 +01:00
at91_can.c can: Switch back to struct platform_driver::remove() 2024-09-11 09:37:16 +02:00
bxcan.c can: bxcan: bxcan_start_xmit(): use can_dev_dropped_skb() instead of can_dropped_invalid_skb() 2025-10-20 17:17:55 +02:00
can327.c tty: use u8 for flags 2023-08-11 21:12:45 +02:00
grcan.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
janz-ican3.c can: janz-ican3: use sysfs_emit() in fwinfo_show() 2025-07-15 11:41:41 +02:00
Kconfig can: kvaser_pciefd: Add devlink support 2025-07-25 17:55:46 +02:00
Makefile can: kvaser_pciefd: Split driver into C-file and header-file. 2025-07-25 17:53:50 +02:00
sun4i_can.c can: sun4i_can: sun4i_can_interrupt(): fix max irq loop handling 2025-11-17 17:23:37 +01:00
ti_hecc.c can: ti_hecc: fix -Woverflow compiler warning 2025-07-15 13:32:02 +02:00
vcan.c can: enable CAN XL for virtual CAN devices by default 2025-09-24 17:05:34 +02:00
vxcan.c can: enable CAN XL for virtual CAN devices by default 2025-09-24 17:05:34 +02:00
xilinx_can.c can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB 2025-09-10 17:12:05 +02:00