aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can/ifi_canfd
diff options
context:
space:
mode:
authorOliver Hartkopp <socketcan@hartkopp.net>2022-11-02 10:54:31 +0100
committerMarc Kleine-Budde <mkl@pengutronix.de>2022-11-07 14:00:27 +0100
commitae64438be1923e3c1102d90fd41db7afcfaf54cc (patch)
tree4653f59a5d91825bee51259007370416134a0663 /drivers/net/can/ifi_canfd
parentcan: j1939: j1939_send_one(): fix missing CAN header initialization (diff)
downloadlinux-dev-ae64438be1923e3c1102d90fd41db7afcfaf54cc.tar.xz
linux-dev-ae64438be1923e3c1102d90fd41db7afcfaf54cc.zip
can: dev: fix skb drop check
In commit a6d190f8c767 ("can: skb: drop tx skb if in listen only mode") the priv->ctrlmode element is read even on virtual CAN interfaces that do not create the struct can_priv at startup. This out-of-bounds read may lead to CAN frame drops for virtual CAN interfaces like vcan and vxcan. This patch mainly reverts the original commit and adds a new helper for CAN interface drivers that provide the required information in struct can_priv. Fixes: a6d190f8c767 ("can: skb: drop tx skb if in listen only mode") Reported-by: Dariusz Stojaczyk <Dariusz.Stojaczyk@opensynergy.com> Cc: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Cc: Max Staudt <max@enpas.org> Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Acked-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Link: https://lore.kernel.org/all/20221102095431.36831-1-socketcan@hartkopp.net Cc: stable@vger.kernel.org # 6.0.x [mkl: patch pch_can, too] Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can/ifi_canfd')
-rw-r--r--drivers/net/can/ifi_canfd/ifi_canfd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/can/ifi_canfd/ifi_canfd.c b/drivers/net/can/ifi_canfd/ifi_canfd.c
index 8d42b7e6661f..07eaf724a572 100644
--- a/drivers/net/can/ifi_canfd/ifi_canfd.c
+++ b/drivers/net/can/ifi_canfd/ifi_canfd.c
@@ -860,7 +860,7 @@ static netdev_tx_t ifi_canfd_start_xmit(struct sk_buff *skb,
u32 txst, txid, txdlc;
int i;
- if (can_dropped_invalid_skb(ndev, skb))
+ if (can_dev_dropped_skb(ndev, skb))
return NETDEV_TX_OK;
/* Check if the TX buffer is full */