diff options
| author | Menglong Dong <menglong8.dong@gmail.com> | 2025-08-21 17:06:06 +0800 |
|---|---|---|
| committer | Alexei Starovoitov <ast@kernel.org> | 2025-08-25 18:52:16 -0700 |
| commit | 68748f0397a356122bf9cf33ef77cabbff9c3e51 (patch) | |
| tree | e5b2935df56d7991580671636be7cde501c2cdfd /kernel/bpf/bpf_iter.c | |
| parent | bpf: use rcu_read_lock_dont_migrate() for bpf_inode_storage_free() (diff) | |
| download | linux-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.c | 6 |
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: |
