]> git.baikalelectronics.ru Git - kernel.git/commit
bpf: Restrict bpf_probe_read{, str}() only to archs where they work
authorDaniel Borkmann <daniel@iogearbox.net>
Fri, 15 May 2020 10:11:16 +0000 (12:11 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 15 May 2020 15:10:36 +0000 (08:10 -0700)
commit42d31d665587706b4d1fd871ddd4d6946d1e4729
tree6d869e1310be667ec0900ccede6290c912b61071
parent84d63f9b0c82df32d549c85eefe00e8ff59871c6
bpf: Restrict bpf_probe_read{, str}() only to archs where they work

Given the legacy bpf_probe_read{,str}() BPF helpers are broken on archs
with overlapping address ranges, we should really take the next step to
disable them from BPF use there.

To generally fix the situation, we've recently added new helper variants
bpf_probe_read_{user,kernel}() and bpf_probe_read_{user,kernel}_str().
For details on them, see 6cff04cfa39c ("bpf: Add probe_read_{user, kernel}
and probe_read_{user,kernel}_str helpers").

Given bpf_probe_read{,str}() have been around for ~5 years by now, there
are plenty of users at least on x86 still relying on them today, so we
cannot remove them entirely w/o breaking the BPF tracing ecosystem.

However, their use should be restricted to archs with non-overlapping
address ranges where they are working in their current form. Therefore,
move this behind a CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE and
have x86, arm64, arm select it (other archs supporting it can follow-up
on it as well).

For the remaining archs, they can workaround easily by relying on the
feature probe from bpftool which spills out defines that can be used out
of BPF C code to implement the drop-in replacement for old/new kernels
via: bpftool feature probe macro

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/bpf/20200515101118.6508-2-daniel@iogearbox.net
arch/arm/Kconfig
arch/arm64/Kconfig
arch/x86/Kconfig
init/Kconfig
kernel/trace/bpf_trace.c