Commit 7c33e97a authored by Sahil Chandna's avatar Sahil Chandna Committed by Alexei Starovoitov
Browse files

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: default avatar <syzbot+1f1fbecb9413cdbfbef8@syzkaller.appspotmail.com>
Closes: https://syzkaller.appspot.com/bug?extid=1f1fbecb9413cdbfbef8


Suggested-by: default avatarYonghong Song <yonghong.song@linux.dev>
Suggested-by: default avatarMenglong Dong <menglong.dong@linux.dev>
Acked-by: default avatarYonghong Song <yonghong.song@linux.dev>
Tested-by: default avatar <syzbot+1f1fbecb9413cdbfbef8@syzkaller.appspotmail.com>
Co-developed-by: default avatarBrahmajit Das <listout@listout.xyz>
Signed-off-by: default avatarBrahmajit Das <listout@listout.xyz>
Signed-off-by: default avatarSahil Chandna <chandna.sahil@gmail.com>
Link: https://lore.kernel.org/r/20251014185635.10300-1-chandna.sahil@gmail.com


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent f6fddc6d
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment