mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
net: linkwatch: use system_unbound_wq
linkwatch_event() grabs possibly very contended RTNL mutex.
system_wq is not suitable for such work.
Inspired by many noisy syzbot reports.
3 locks held by kworker/0:7/5266:
#0: ffff888015480948 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3206 [inline]
#0: ffff888015480948 ((wq_completion)events){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3312
#1: ffffc90003f6fd00 ((linkwatch_work).work){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3207 [inline]
, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3312
#2: ffffffff8fa6f208 (rtnl_mutex){+.+.}-{3:3}, at: linkwatch_event+0xe/0x60 net/core/link_watch.c:276
Reported-by: syzbot <syzkaller@googlegroups.com>
Fixes: 1da177e4c3
("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20240805085821.1616528-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
92c4ee2520
commit
3e7917c0cd
@ -148,9 +148,9 @@ static void linkwatch_schedule_work(int urgent)
|
||||
* override the existing timer.
|
||||
*/
|
||||
if (test_bit(LW_URGENT, &linkwatch_flags))
|
||||
mod_delayed_work(system_wq, &linkwatch_work, 0);
|
||||
mod_delayed_work(system_unbound_wq, &linkwatch_work, 0);
|
||||
else
|
||||
schedule_delayed_work(&linkwatch_work, delay);
|
||||
queue_delayed_work(system_unbound_wq, &linkwatch_work, delay);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user