From: sashiko-bot@kernel.org
To: "Oliver Hartkopp" <socketcan@hartkopp.net>
Cc: "Marc Kleine-Budde" <mkl@pengutronix.de>,
"Vincent Mailhol" <mailhol@kernel.org>,
linux-can@vger.kernel.org,
"Oleksij Rempel" <o.rempel@pengutronix.de>,
"Oliver Hartkopp" <socketcan@hartkopp.net>
Subject: Re: [PATCH v12 08/11] can: bcm: add missing device refcount for CAN filter removal
Date: Thu, 09 Jul 2026 20:35:51 +0000 [thread overview]
Message-ID: <20260709203551.F02F31F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260709-bcm_fixes-v12-8-61c06291bf1c@hartkopp.net>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
Pre-existing issues:
- [High] Updating a BCM RX operation whose device was concurrently unregistered fails to re-register the CAN filter.
- [High] Lockless writes to op->rx_stamp and op->rx_ifindex in bcm_rx_handler can cause corrupted timestamps and mismatched metadata.
--
--- Patch [8]: [PATCH v12 08/11] can: bcm: add missing device refcount for CAN filter removal ---
commit 58881d5a5a65fccadb46fbccf91d34e84d09b49e
Author: Oliver Hartkopp <socketcan@hartkopp.net>
can: bcm: add missing device refcount for CAN filter removal
This commit addresses a memory leak issue and concurrent device
unregistration by taking a tracked netdevice reference during filter
registration.
Link: https://sashiko.dev/#/patchset/20260707094716.63578-1-socketcan@hartkopp.net
> diff --git a/net/can/bcm.c b/net/can/bcm.c
> index 3cc3deb98a984..5660165cdf0eb 100644
> --- a/net/can/bcm.c
> +++ b/net/can/bcm.c
> @@ -778,8 +778,8 @@ static void bcm_rx_handler(struct sk_buff *skb, void *data)
>
> /* disable timeout */
> hrtimer_cancel(&op->timer);
>
> /* save rx timestamp */
> op->rx_stamp = skb->tstamp;
> /* save originator for recvfrom() */
> op->rx_ifindex = skb->dev->ifindex;
>
> /* op->flags/op->frames may be updated concurrently by bcm_rx_setup() */
> spin_lock_bh(&op->bcm_rx_update_lock);
[Severity: High]
This isn't a bug introduced by this patch, but can these lockless writes to
op->rx_stamp and op->rx_ifindex cause corrupted timestamps and mismatched
metadata?
If a CAN socket bound to all interfaces (ifindex == 0) receives packets
simultaneously from multiple interfaces in softirq context, could concurrent
execution of bcm_rx_handler() on different CPUs race to write these fields
outside of bcm_rx_update_lock?
On 32-bit systems, could this cause torn 64-bit ktime_t writes and wildly
corrupted timestamps?
Additionally, could one CPU overwrite the ifindex while another is passing it
to userspace, causing packets to be delivered with the wrong source interface
index?
[ ... ]
> @@ -1341,8 +1341,8 @@ static int bcm_rx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg,
>
> /* free temporary frames / kfree(NULL) is safe */
> kfree(new_frames);
>
> /* Only an update -> do not call can_rx_register() */
> do_rx_register = 0;
[Severity: High]
This isn't a bug introduced by this patch, but does this unconditionally force
do_rx_register to 0 for an existing operation?
If a CAN interface is unregistered, triggering bcm_notify() which unregisters
the filter but leaves the bcm_op alive, and the application then issues an
RX_SETUP update on the same ifindex, won't skipping can_rx_register() here
leave the updated filter permanently detached from the CAN core?
Could this silently drop all CAN frames while returning a success return code to
the user application?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260709-bcm_fixes-v12-0-61c06291bf1c@hartkopp.net?part=8
next prev parent reply other threads:[~2026-07-09 20:35 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 20:22 [PATCH v12 00/11] can: bcm: collected fixes - final7 \o/ \o/ Oliver Hartkopp via B4 Relay
2026-07-09 20:22 ` [PATCH v12 01/11] can: bcm: defer rx_op deallocation to workqueue to fix thrtimer UAF Oliver Hartkopp via B4 Relay
2026-07-09 20:40 ` sashiko-bot
2026-07-09 20:22 ` [PATCH v12 02/11] can: bcm: fix lockless bound/ifindex race and silent RX_SETUP failure Oliver Hartkopp via B4 Relay
2026-07-10 0:40 ` sashiko-bot
2026-07-09 20:22 ` [PATCH v12 03/11] can: bcm: add locking when updating filter and timer values Oliver Hartkopp via B4 Relay
2026-07-09 20:38 ` sashiko-bot
2026-07-09 20:22 ` [PATCH v12 04/11] can: bcm: fix CAN frame rx/tx statistics Oliver Hartkopp via B4 Relay
2026-07-09 20:35 ` sashiko-bot
2026-07-09 20:22 ` [PATCH v12 05/11] can: bcm: add missing rcu list annotations and operations Oliver Hartkopp via B4 Relay
2026-07-09 20:35 ` sashiko-bot
2026-07-09 20:22 ` [PATCH v12 06/11] can: bcm: extend bcm_tx_lock usage for data and timer updates Oliver Hartkopp via B4 Relay
2026-07-09 20:22 ` [PATCH v12 07/11] can: bcm: validate frame length in bcm_rx_setup() for RTR replies Oliver Hartkopp via B4 Relay
2026-07-09 20:22 ` [PATCH v12 08/11] can: bcm: add missing device refcount for CAN filter removal Oliver Hartkopp via B4 Relay
2026-07-09 20:35 ` sashiko-bot [this message]
2026-07-09 20:22 ` [PATCH v12 09/11] can: bcm: fix stale rx/tx ops after device removal Oliver Hartkopp via B4 Relay
2026-07-09 20:40 ` sashiko-bot
2026-07-09 20:22 ` [PATCH v12 10/11] can: bcm: fix data race on rx_stamp/rx_ifindex in bcm_rx_handler() Oliver Hartkopp via B4 Relay
2026-07-09 20:44 ` sashiko-bot
2026-07-09 20:22 ` [PATCH v12 11/11] can: bcm: track a single source interface for ANYDEV timeout/throttle ops 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=20260709203551.F02F31F00A3A@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox