On 07.06.21 18:15, Kirill Tkhai wrote:
On 05.06.2021 13:26, Tetsuo Handa wrote:
Updated patch is shown below.
From 12c61ae3d06889c9bbc414f0230c05dc630f6409 Mon Sep 17 00:00:00 2001
From: Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 5 Jun 2021 19:18:21 +0900
Subject: [PATCH v2] can: bcm/raw/isotp: use per module netdevice notifier
syzbot is reporting hung task at register_netdevice_notifier() [1] and
unregister_netdevice_notifier() [2], for cleanup_net() might perform
time consuming operations while CAN driver's raw/bcm/isotp modules are
calling {register,unregister}_netdevice_notifier() on each socket.
Change raw/bcm/isotp modules to call register_netdevice_notifier() from
module's __init function and call unregister_netdevice_notifier() from
module's __exit function, as with gw/j1939 modules are doing.
Link: https://syzkaller.appspot.com/bug?id=391b9498827788b3cc6830226d4ff5be87107c30 [1]
Link: https://syzkaller.appspot.com/bug?id=1724d278c83ca6e6df100a2e320c10d991cf2bce [2]
Reported-by: syzbot <syzbot+355f8edb2ff45d5f95fa@xxxxxxxxxxxxxxxxxxxxxxxxx>
Reported-by: syzbot <syzbot+0f1827363a305f74996f@xxxxxxxxxxxxxxxxxxxxxxxxx>
Tested-by: syzbot <syzbot+355f8edb2ff45d5f95fa@xxxxxxxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx>
Reviewed-by: Kirill Tkhai <ktkhai@xxxxxxxxxxxxx>
Tested-by: Oliver Hartkopp <socketcan@xxxxxxxxxxxx>
Hello Tetsuo and Kirill,
thanks for your effort and the review!
Indeed I really had problems to get behind the locking but now I got it
(hopefully) :-)
At least I can confirm that the original functionality still works for
all three affected CAN protocols (bcm/isotp/raw).
Many thanks and best regards,
Oliver
---
net/can/bcm.c | 59 +++++++++++++++++++++++++++++++++++-----------
net/can/isotp.c | 61 +++++++++++++++++++++++++++++++++++++-----------
net/can/raw.c | 62 ++++++++++++++++++++++++++++++++++++++-----------
3 files changed, 142 insertions(+), 40 deletions(-)