bpf: Do not disable preemption in bpf_test_run().
The timer mode is initialized to NO_PREEMPT mode by default, this disables preemption and force execution in atomic context causing issue on PREEMPT_RT configurations when invoking spin_lock_bh(), leading to the following warning: BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48 in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 6107, name: syz.0.17 preempt_count: 1, expected: 0 RCU nest depth: 1, expected: 1 Preemption disabled at: [<ffffffff891fce58>] bpf_test_timer_enter+0xf8/0x140 net/bpf/test_run.c:42 Fix this, by removing NO_PREEMPT/NO_MIGRATE mode check. Also, the test timer context no longer needs explicit calls to migrate_disable()/migrate_enable() with rcu_read_lock()/rcu_read_unlock(). Use helpers rcu_read_lock_dont_migrate() and rcu_read_unlock_migrate() instead. Reported-by:<syzbot+1f1fbecb9413cdbfbef8@syzkaller.appspotmail.com> Closes: https://syzkaller.appspot.com/bug?extid=1f1fbecb9413cdbfbef8 Suggested-by:
Yonghong Song <yonghong.song@linux.dev> Suggested-by:
Menglong Dong <menglong.dong@linux.dev> Acked-by:
Yonghong Song <yonghong.song@linux.dev> Tested-by:
<syzbot+1f1fbecb9413cdbfbef8@syzkaller.appspotmail.com> Co-developed-by:
Brahmajit Das <listout@listout.xyz> Signed-off-by:
Brahmajit Das <listout@listout.xyz> Signed-off-by:
Sahil Chandna <chandna.sahil@gmail.com> Link: https://lore.kernel.org/r/20251014185635.10300-1-chandna.sahil@gmail.com Signed-off-by:
Alexei Starovoitov <ast@kernel.org>
Loading
Please sign in to comment