On Wed, Aug 17, 2022 at 9:24 PM Kuniyuki Iwashima <kuniyu@xxxxxxxxxx> wrote: > > A sysctl variable bpf_jit_enable is accessed concurrently, and there is > always a chance of data-race. So, all readers and a writer need some > basic protection to avoid load/store-tearing. > > Fixes: 0a14842f5a3c ("net: filter: Just In Time compiler for x86-64") > Signed-off-by: Kuniyuki Iwashima <kuniyu@xxxxxxxxxx> > --- > arch/arm/net/bpf_jit_32.c | 2 +- > arch/arm64/net/bpf_jit_comp.c | 2 +- > arch/mips/net/bpf_jit_comp.c | 2 +- > arch/powerpc/net/bpf_jit_comp.c | 5 +++-- > arch/riscv/net/bpf_jit_core.c | 2 +- > arch/s390/net/bpf_jit_comp.c | 2 +- > arch/sparc/net/bpf_jit_comp_32.c | 5 +++-- > arch/sparc/net/bpf_jit_comp_64.c | 5 +++-- > arch/x86/net/bpf_jit_comp.c | 2 +- > arch/x86/net/bpf_jit_comp32.c | 2 +- > include/linux/filter.h | 2 +- > net/core/sysctl_net_core.c | 4 ++-- > 12 files changed, 19 insertions(+), 16 deletions(-) > > diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c > index 6a1c9fca5260..4b6b62a6fdd4 100644 > --- a/arch/arm/net/bpf_jit_32.c > +++ b/arch/arm/net/bpf_jit_32.c > @@ -1999,7 +1999,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) > } > flush_icache_range((u32)header, (u32)(ctx.target + ctx.idx)); > > - if (bpf_jit_enable > 1) > + if (READ_ONCE(bpf_jit_enable) > 1) Nack. Even if the compiler decides to use single byte loads for some odd reason there is no issue here.