aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/bpf/bpf_iter.c
diff options
context:
space:
mode:
authorMenglong Dong <menglong8.dong@gmail.com>2025-08-21 17:06:06 +0800
committerAlexei Starovoitov <ast@kernel.org>2025-08-25 18:52:16 -0700
commit68748f0397a356122bf9cf33ef77cabbff9c3e51 (patch)
treee5b2935df56d7991580671636be7cde501c2cdfd /kernel/bpf/bpf_iter.c
parentbpf: use rcu_read_lock_dont_migrate() for bpf_inode_storage_free() (diff)
downloadlinux-68748f0397a356122bf9cf33ef77cabbff9c3e51.tar.gz
linux-68748f0397a356122bf9cf33ef77cabbff9c3e51.zip
bpf: use rcu_read_lock_dont_migrate() for bpf_iter_run_prog()
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>
Diffstat (limited to 'kernel/bpf/bpf_iter.c')
-rw-r--r--kernel/bpf/bpf_iter.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/kernel/bpf/bpf_iter.c b/kernel/bpf/bpf_iter.c
index 0cbcae727079..6ac35430c573 100644
--- a/kernel/bpf/bpf_iter.c
+++ b/kernel/bpf/bpf_iter.c
@@ -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: