]> www.infradead.org Git - users/hch/misc.git/commitdiff
bpf: use rcu_read_lock_dont_migrate() for bpf_iter_run_prog()
authorMenglong Dong <menglong8.dong@gmail.com>
Thu, 21 Aug 2025 09:06:06 +0000 (17:06 +0800)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 26 Aug 2025 01:52:16 +0000 (18:52 -0700)
Use rcu_read_lock_dont_migrate() and rcu_read_unlock_migrate() in
bpf_iter_run_prog to obtain better performance when PREEMPT_RCU is
not enabled.

Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn>
Link: https://lore.kernel.org/r/20250821090609.42508-5-dongml2@chinatelecom.cn
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/bpf/bpf_iter.c

index 0cbcae7270790a9139aa7ad202c463df54ebc244..6ac35430c5734431339e041ffcad3a3eeaad3040 100644 (file)
@@ -705,13 +705,11 @@ int bpf_iter_run_prog(struct bpf_prog *prog, void *ctx)
                migrate_enable();
                rcu_read_unlock_trace();
        } else {
-               rcu_read_lock();
-               migrate_disable();
+               rcu_read_lock_dont_migrate();
                old_run_ctx = bpf_set_run_ctx(&run_ctx);
                ret = bpf_prog_run(prog, ctx);
                bpf_reset_run_ctx(old_run_ctx);
-               migrate_enable();
-               rcu_read_unlock();
+               rcu_read_unlock_migrate();
        }
 
        /* bpf program can only return 0 or 1: