can: j1939: change j1939_netdev_lock type to mutex
authorFedor Pchelkin <pchelkin@ispras.ru>
Fri, 26 May 2023 17:19:09 +0000 (20:19 +0300)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 5 Jun 2023 06:26:31 +0000 (08:26 +0200)
commitcd9c790de2088b0d797dc4d244b4f174f9962554
tree9592255c416e0f6136b185c7a8e5a25b11496d73
parent2a84aea80e925ecba6349090559754f8e8eb68ef
can: j1939: change j1939_netdev_lock type to mutex

It turns out access to j1939_can_rx_register() needs to be serialized,
otherwise j1939_priv can be corrupted when parallel threads call
j1939_netdev_start() and j1939_can_rx_register() fails. This issue is
thoroughly covered in other commit which serializes access to
j1939_can_rx_register().

Change j1939_netdev_lock type to mutex so that we do not need to remove
GFP_KERNEL from can_rx_register().

j1939_netdev_lock seems to be used in normal contexts where mutex usage
is not prohibited.

Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
Suggested-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Tested-by: Oleksij Rempel <o.rempel@pengutronix.de>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://lore.kernel.org/r/20230526171910.227615-2-pchelkin@ispras.ru
Cc: stable@vger.kernel.org
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
net/can/j1939/main.c