diff options
author | David Miller <davem@davemloft.net> | 2020-02-24 17:01:43 +0300 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2020-02-25 03:20:09 +0300 |
commit | 3d9f773cf2876c01a505b9fe27270901d464e90a (patch) | |
tree | d5ed0350db81b38cf8c0234d7c066f65595addff /include/linux/filter.h | |
parent | 37e1d9202225635772b32e340294208367279c2b (diff) | |
download | linux-3d9f773cf2876c01a505b9fe27270901d464e90a.tar.xz |
bpf: Use bpf_prog_run_pin_on_cpu() at simple call sites.
All of these cases are strictly of the form:
preempt_disable();
BPF_PROG_RUN(...);
preempt_enable();
Replace this with bpf_prog_run_pin_on_cpu() which wraps BPF_PROG_RUN()
with:
migrate_disable();
BPF_PROG_RUN(...);
migrate_enable();
On non RT enabled kernels this maps to preempt_disable/enable() and on RT
enabled kernels this solely prevents migration, which is sufficient as
there is no requirement to prevent reentrancy to any BPF program from a
preempting task. The only requirement is that the program stays on the same
CPU.
Therefore, this is a trivially correct transformation.
The seccomp loop does not need protection over the loop. It only needs
protection per BPF filter program
[ tglx: Converted to bpf_prog_run_pin_on_cpu() ]
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200224145643.691493094@linutronix.de
Diffstat (limited to 'include/linux/filter.h')
-rw-r--r-- | include/linux/filter.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/include/linux/filter.h b/include/linux/filter.h index 1982a52eb4c9..9270de2a0df8 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -717,9 +717,7 @@ static inline u32 bpf_prog_run_clear_cb(const struct bpf_prog *prog, if (unlikely(prog->cb_access)) memset(cb_data, 0, BPF_SKB_CB_LEN); - preempt_disable(); - res = BPF_PROG_RUN(prog, skb); - preempt_enable(); + res = bpf_prog_run_pin_on_cpu(prog, skb); return res; } |