1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/can
Vincent Mailhol e2b1e4b532 can: etas_es58x: fix null pointer dereference when handling error frames
During the handling of CAN bus errors, a CAN error SKB is allocated
using alloc_can_err_skb(). Even if the allocation of the SKB fails,
the function continues in order to do the stats handling.

All access to the can_frame pointer (cf) should be guarded by an if
statement:
	if (cf)

However, the increment of the rx_bytes stats:
	netdev->stats.rx_bytes += cf->can_dlc;
dereferences the cf pointer and was not guarded by an if condition
leading to a NULL pointer dereference if the can_err_skb() function
failed.

Replacing the cf->can_dlc by the macro CAN_ERR_DLC (which is the
length of any CAN error frames) solves this NULL pointer dereference.

Fixes: 8537257874 ("can: etas_es58x: add core support for ETAS ES58X CAN USB interfaces")
Link: https://lore.kernel.org/r/20210413114242.2760-1-mailhol.vincent@wanadoo.fr
Reported-by: Arunachalam Santhanam <arunachalam.santhanam@in.bosch.com>
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-04-14 09:32:12 +02:00
..
c_can can: c_can: remove unused enum BOSCH_C_CAN_PLATFORM 2021-04-07 09:31:28 +02:00
cc770 can: dev: can_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
dev can: skb: alloc_can{,fd}_skb(): set "cf" to NULL if skb allocation fails 2021-04-07 09:31:19 +02:00
ifi_canfd can: dev: can_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
m_can can: m_can: m_can_receive_skb(): add missing error handling to can_rx_offload_queue_sorted() call 2021-04-07 09:31:28 +02:00
mscan can: dev: can_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
peak_canfd module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
rcar can: dev: can_free_echo_skb(): extend to return can frame length 2021-03-30 11:14:28 +02:00
sja1000 can: dev: can_free_echo_skb(): extend to return can frame length 2021-03-30 11:14:28 +02:00
softing can: dev: can_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
spi Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-09 20:48:35 -07:00
usb can: etas_es58x: fix null pointer dereference when handling error frames 2021-04-14 09:32:12 +02:00
at91_can.c can: dev: can_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
flexcan.c can: flexcan: flexcan_chip_freeze(): fix chip freeze for missing bitrate 2021-03-16 08:41:26 +01:00
grcan.c can: dev: can_free_echo_skb(): extend to return can frame length 2021-03-30 11:14:28 +02:00
janz-ican3.c can: replace can_dlc as variable/element for payload length 2020-11-20 12:04:12 +01:00
Kconfig can: grcan: add missing Kconfig dependency to HAS_IOMEM 2021-03-30 11:14:45 +02:00
kvaser_pciefd.c can: kvaser_pciefd: Always disable bus load reporting 2021-03-16 08:41:26 +01:00
led.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
Makefile can: dev: move driver related infrastructure into separate subdir 2021-01-13 09:42:58 +01:00
pch_can.c can: dev: can_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
slcan.c net: introduce CAN specific pointer in the struct net_device 2021-02-24 14:32:15 -08:00
sun4i_can.c can: dev: can_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
ti_hecc.c can: dev: can_rx_offload_get_echo_skb(): extend to return can frame length 2021-01-14 08:43:43 +01:00
vcan.c net: introduce CAN specific pointer in the struct net_device 2021-02-24 14:32:15 -08:00
vxcan.c net: introduce CAN specific pointer in the struct net_device 2021-02-24 14:32:15 -08:00
xilinx_can.c can: xilinx_can: Simplify code by using dev_err_probe() 2021-03-30 11:14:46 +02:00