]> git.ipfire.org Git - thirdparty/linux.git/commit
can: j1939: add missing calls in NETDEV_UNREGISTER notification handler
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Sat, 27 Sep 2025 12:11:16 +0000 (21:11 +0900)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 13 Oct 2025 19:26:31 +0000 (21:26 +0200)
commit93a27b5891b8194a8c083c9a80d2141d4bf47ba8
tree7313df736ad211fb49197df5547fc059cf9ad7a0
parenta3c35f8270c175f164dd74960c437d1edc8a291a
can: j1939: add missing calls in NETDEV_UNREGISTER notification handler

Currently NETDEV_UNREGISTER event handler is not calling
j1939_cancel_active_session() and j1939_sk_queue_drop_all().
This will result in these calls being skipped when j1939_sk_release() is
called. And I guess that the reason syzbot is still reporting

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

is caused by lack of these calls.

Calling j1939_cancel_active_session(priv, sk) from j1939_sk_release() can
be covered by calling j1939_cancel_active_session(priv, NULL) from
j1939_netdev_notify().

Calling j1939_sk_queue_drop_all() from j1939_sk_release() can be covered
by calling j1939_sk_netdev_event_netdown() from j1939_netdev_notify().

Therefore, we can reuse j1939_cancel_active_session(priv, NULL) and
j1939_sk_netdev_event_netdown(priv) for NETDEV_UNREGISTER event handler.

Fixes: 7fcbe5b2c6a4 ("can: j1939: implement NETDEV_UNREGISTER notification handler")
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Tested-by: Oleksij Rempel <o.rempel@pengutronix.de>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://patch.msgid.link/3ad3c7f8-5a74-4b07-a193-cb0725823558@I-love.SAKURA.ne.jp
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
net/can/j1939/main.c