From: sashiko-bot@kernel.org
To: "Oliver Hartkopp" <socketcan@hartkopp.net>
Cc: "Oleksij Rempel" <o.rempel@pengutronix.de>,
"Oliver Hartkopp" <socketcan@hartkopp.net>,
"Marc Kleine-Budde" <mkl@pengutronix.de>,
"Vincent Mailhol" <mailhol@kernel.org>,
linux-can@vger.kernel.org
Subject: Re: [PATCH v14 04/11] can: bcm: fix CAN frame rx/tx statistics
Date: Tue, 14 Jul 2026 11:45:00 +0000 [thread overview]
Message-ID: <20260714114500.EFA7E1F01560@smtp.kernel.org> (raw)
In-Reply-To: <20260714-bcm_fixes-v14-4-867a4be60a61@hartkopp.net>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Concurrent updates to `op->rx_stamp` and `op->rx_ifindex` outside of `bcm_rx_update_lock` lead to torn writes and mismatched metadata being delivered to user space.
--
--- Patch [4]: [PATCH v14 04/11] can: bcm: fix CAN frame rx/tx statistics ---
commit 1507f4edb289e7819b879095be4c4c84a3b1f750
Author: Oliver Hartkopp <socketcan@hartkopp.net>
can: bcm: fix CAN frame rx/tx statistics
This commit addresses KCSAN-detected data races in bcm_rx_handler() by
using atomic operations for rx/tx statistics. It also restructures the
critical sections under bcm_rx_update_lock to prevent frames_filtered from
ever incorrectly exceeding frames_abs during concurrent updates.
> diff --git a/net/can/bcm.c b/net/can/bcm.c
> index af4bb4182bc29..38c3f690c1cd0 100644
> --- a/net/can/bcm.c
> +++ b/net/can/bcm.c
[ ... ]
> @@ -748,24 +767,30 @@ static void bcm_rx_handler(struct sk_buff *skb, void *data)
> op->rx_stamp = skb->tstamp;
> /* save originator for recvfrom() */
> op->rx_ifindex = skb->dev->ifindex;
> - /* update statistics */
> - op->frames_abs++;
>
> - /* snapshot the flag under lock: op->flags/op->frames may be updated
> - * concurrently by bcm_rx_setup().
> - */
> spin_lock_bh(&op->bcm_rx_update_lock);
[Severity: High]
This is a pre-existing issue, but since this patch focuses on fixing
concurrent data races in bcm_rx_handler(), should these metadata fields
be moved inside the bcm_rx_update_lock as well?
If two CAN frames matching the same ANYDEV filter arrive concurrently on
different interfaces, could CPU2 overwrite op->rx_ifindex before CPU1
acquires the lock?
If CPU1 subsequently reads op->rx_ifindex inside bcm_send_to_user(), would
it attach CPU2's interface index to CPU1's CAN frame, delivering mismatched
metadata to user space?
Additionally, on 32-bit systems, could concurrent unprotected writes to the
64-bit ktime_t op->rx_stamp result in torn writes and corrupted timestamps?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260714-bcm_fixes-v14-0-867a4be60a61@hartkopp.net?part=4
next prev parent reply other threads:[~2026-07-14 11:45 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-14 11:30 [PATCH v14 00/11] can: bcm: collected fixes Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:30 ` [PATCH v14 01/11] can: bcm: defer rx_op deallocation to workqueue to fix thrtimer UAF Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:57 ` sashiko-bot
2026-07-14 11:30 ` [PATCH v14 02/11] can: bcm: fix lockless bound/ifindex race and silent RX_SETUP failure Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:51 ` sashiko-bot
2026-07-14 11:30 ` [PATCH v14 03/11] can: bcm: add locking when updating filter and timer values Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:52 ` sashiko-bot
2026-07-14 11:30 ` [PATCH v14 04/11] can: bcm: fix CAN frame rx/tx statistics Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:45 ` sashiko-bot [this message]
2026-07-14 11:30 ` [PATCH v14 05/11] can: bcm: add missing rcu list annotations and operations Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:40 ` sashiko-bot
2026-07-14 11:30 ` [PATCH v14 06/11] can: bcm: extend bcm_tx_lock usage for data and timer updates Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:49 ` sashiko-bot
2026-07-14 11:30 ` [PATCH v14 07/11] can: bcm: validate frame length in bcm_rx_setup() for RTR replies Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:30 ` [PATCH v14 08/11] can: bcm: add missing device refcount for CAN filter removal Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:30 ` [PATCH v14 09/11] can: bcm: fix stale rx/tx ops after device removal Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:30 ` [PATCH v14 10/11] can: bcm: fix data race on rx_stamp/rx_ifindex in bcm_rx_handler() Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
2026-07-14 11:30 ` [PATCH v14 11/11] can: bcm: track a single source interface for ANYDEV timeout/throttle ops Oliver Hartkopp
2026-07-14 11:30 ` Oliver Hartkopp via B4 Relay
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260714114500.EFA7E1F01560@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=mailhol@kernel.org \
--cc=mkl@pengutronix.de \
--cc=o.rempel@pengutronix.de \
--cc=sashiko-reviews@lists.linux.dev \
--cc=socketcan@hartkopp.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.