]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
can: j1939: make j1939_session_activate() fail if device is no longer registered
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Tue, 25 Nov 2025 13:39:59 +0000 (22:39 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Jan 2026 15:31:28 +0000 (16:31 +0100)
commitba6f0d1832eeb5eb3a6dc5cb30e0f720b3cb3536
tree3f10e83bda47c9bed220daa37e0854346df553b8
parent47206d70d1fba05470a2bd00ae3d66d27487c195
can: j1939: make j1939_session_activate() fail if device is no longer registered

[ Upstream commit 5d5602236f5db19e8b337a2cd87a90ace5ea776d ]

syzbot is still reporting

  unregister_netdevice: waiting for vcan0 to become free. Usage count = 2

even after commit 93a27b5891b8 ("can: j1939: add missing calls in
NETDEV_UNREGISTER notification handler") was added. A debug printk() patch
found that j1939_session_activate() can succeed even after
j1939_cancel_active_session() from j1939_netdev_notify(NETDEV_UNREGISTER)
has completed.

Since j1939_cancel_active_session() is processed with the session list lock
held, checking ndev->reg_state in j1939_session_activate() with the session
list lock held can reliably close the race window.

Reported-by: syzbot <syzbot+881d65229ca4f9ae8c84@syzkaller.appspotmail.com>
Closes: https://syzkaller.appspot.com/bug?extid=881d65229ca4f9ae8c84
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://patch.msgid.link/b9653191-d479-4c8b-8536-1326d028db5c@I-love.SAKURA.ne.jp
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/can/j1939/transport.c