On Sat, Nov 17, 2018 at 6:58 PM Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote: > > On arm64, modules are allocated from a 128 MB window which is close to > the core kernel, so that relative direct branches are guaranteed to be > in range (except in some KASLR configurations). Also, module_alloc() > is in charge of allocating KASAN shadow memory when running with KASAN > enabled. > > This means that the way BPF reuses module_alloc()/module_memfree() is > undesirable on arm64 (and potentially other architectures as well), > and so this series refactors BPF's use of those functions to permit > architectures to change this behavior. > > Patch #1 fixes a bug introduced during the merge window, where the new > alloc/free tracking does not account for memory that is freed by some > arch code. > > Patch #2 refactors the freeing path so that architectures can switch to > something other than module_memfree(). > > Patch #3 does the same for module_alloc(). > > Patch #4 implements the new alloc/free overrides for arm64 Except a minor comment, the whole patch set looks good to me. Acked-by: Yonghong Song <yhs@xxxxxx> > > Cc: Daniel Borkmann <daniel@xxxxxxxxxxxxx> > Cc: Alexei Starovoitov <ast@xxxxxxxxxx> > Cc: Rick Edgecombe <rick.p.edgecombe@xxxxxxxxx> > Cc: Eric Dumazet <eric.dumazet@xxxxxxxxx> > Cc: Jann Horn <jannh@xxxxxxxxxx> > Cc: Kees Cook <keescook@xxxxxxxxxxxx> > > Cc: Jessica Yu <jeyu@xxxxxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > Cc: Catalin Marinas <catalin.marinas@xxxxxxx> > Cc: Will Deacon <will.deacon@xxxxxxx> > Cc: Mark Rutland <mark.rutland@xxxxxxx> > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > Cc: Paul Burton <paul.burton@xxxxxxxx> > Cc: James Hogan <jhogan@xxxxxxxxxx> > Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> > Cc: Paul Mackerras <paulus@xxxxxxxxx> > Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Cc: linux-mips@xxxxxxxxxxxxxx > Cc: linuxppc-dev@xxxxxxxxxxxxxxxx > Cc: sparclinux@xxxxxxxxxxxxxxx > Cc: netdev@xxxxxxxxxxxxxxx > > Ard Biesheuvel (4): > bpf: account for freed JIT allocations in arch code > net/bpf: refactor freeing of executable allocations > bpf: add __weak hook for allocating executable memory > arm64/bpf: don't allocate BPF JIT programs in module memory > > arch/arm64/net/bpf_jit_comp.c | 11 ++++++++++ > arch/mips/net/bpf_jit.c | 7 ++----- > arch/powerpc/net/bpf_jit_comp.c | 7 ++----- > arch/powerpc/net/bpf_jit_comp64.c | 12 +++-------- > arch/sparc/net/bpf_jit_comp_32.c | 7 ++----- > kernel/bpf/core.c | 22 ++++++++++---------- > 6 files changed, 31 insertions(+), 35 deletions(-) > > -- > 2.17.1 >