Message ID | 20220916135953.1320601-2-keescook@chromium.org (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | BPF |
Headers | show |
Series | [1/3] x86/uaccess: Move nmi_uaccess_okay() into uaccess.h | expand |
Context | Check | Description |
---|---|---|
bpf/vmtest-bpf-next-VM_Test-2 | success | Logs for build for x86_64 with gcc |
bpf/vmtest-bpf-next-VM_Test-3 | success | Logs for build for x86_64 with llvm-16 |
bpf/vmtest-bpf-next-VM_Test-4 | success | Logs for llvm-toolchain |
bpf/vmtest-bpf-next-VM_Test-5 | success | Logs for set-matrix |
bpf/vmtest-bpf-next-VM_Test-1 | success | Logs for build for s390x with gcc |
bpf/vmtest-bpf-next-VM_Test-9 | success | Logs for test_progs on s390x with gcc |
bpf/vmtest-bpf-next-VM_Test-12 | success | Logs for test_progs_no_alu32 on s390x with gcc |
bpf/vmtest-bpf-next-VM_Test-13 | success | Logs for test_progs_no_alu32 on x86_64 with gcc |
bpf/vmtest-bpf-next-VM_Test-14 | fail | Logs for test_progs_no_alu32 on x86_64 with llvm-16 |
bpf/vmtest-bpf-next-VM_Test-15 | success | Logs for test_verifier on s390x with gcc |
bpf/vmtest-bpf-next-VM_Test-16 | success | Logs for test_verifier on x86_64 with gcc |
bpf/vmtest-bpf-next-VM_Test-17 | success | Logs for test_verifier on x86_64 with llvm-16 |
bpf/vmtest-bpf-next-VM_Test-7 | success | Logs for test_maps on x86_64 with gcc |
bpf/vmtest-bpf-next-VM_Test-8 | success | Logs for test_maps on x86_64 with llvm-16 |
bpf/vmtest-bpf-next-VM_Test-10 | success | Logs for test_progs on x86_64 with gcc |
bpf/vmtest-bpf-next-VM_Test-11 | success | Logs for test_progs on x86_64 with llvm-16 |
bpf/vmtest-bpf-next-PR | fail | PR summary |
bpf/vmtest-bpf-next-VM_Test-6 | success | Logs for test_maps on s390x with gcc |
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index f969410d0c90..3e2bb6324ca3 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -36,7 +36,6 @@ #include <asm/smp.h> #include <asm/alternative.h> #include <asm/mmu_context.h> -#include <asm/tlbflush.h> #include <asm/timer.h> #include <asm/desc.h> #include <asm/ldt.h> diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index cda3118f3b27..233818bb72c6 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -157,9 +157,6 @@ struct tlb_state_shared { }; DECLARE_PER_CPU_SHARED_ALIGNED(struct tlb_state_shared, cpu_tlbstate_shared); -bool nmi_uaccess_okay(void); -#define nmi_uaccess_okay nmi_uaccess_okay - /* Initialize cr4 shadow for this CPU. */ static inline void cr4_init_shadow(void) { diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h index 913e593a3b45..e9390eea861b 100644 --- a/arch/x86/include/asm/uaccess.h +++ b/arch/x86/include/asm/uaccess.h @@ -20,6 +20,9 @@ static inline bool pagefault_disabled(void); # define WARN_ON_IN_IRQ() #endif +bool nmi_uaccess_okay(void); +#define nmi_uaccess_okay nmi_uaccess_okay + /** * access_ok - Checks if a user space pointer is valid * @addr: User space pointer to start of block to check diff --git a/arch/x86/lib/usercopy.c b/arch/x86/lib/usercopy.c index ad0139d25401..959489f2f814 100644 --- a/arch/x86/lib/usercopy.c +++ b/arch/x86/lib/usercopy.c @@ -7,8 +7,6 @@ #include <linux/uaccess.h> #include <linux/export.h> -#include <asm/tlbflush.h> - /** * copy_from_user_nmi - NMI safe copy from user * @to: Pointer to the destination buffer diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index 492dce43236e..14efd74f3e70 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h @@ -17,15 +17,6 @@ #include <asm/tlbflush.h> #include <asm/cacheflush.h> -/* - * Blindly accessing user memory from NMI context can be dangerous - * if we're in the middle of switching the current user task or switching - * the loaded mm. - */ -#ifndef nmi_uaccess_okay -# define nmi_uaccess_okay() true -#endif - #ifdef CONFIG_MMU /* diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index 47e5d374c7eb..065e121d2a86 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h @@ -10,6 +10,15 @@ #include <asm/uaccess.h> +/* + * Blindly accessing user memory from NMI context can be dangerous + * if we're in the middle of switching the current user task or switching + * the loaded mm. + */ +#ifndef nmi_uaccess_okay +# define nmi_uaccess_okay() true +#endif + /* * Architectures should provide two primitives (raw_copy_{to,from}_user()) * and get rid of their private instances of copy_{to,from}_user() and diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index 68e5cdd24cef..0fd185c3d174 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -26,8 +26,6 @@ #include <uapi/linux/bpf.h> #include <uapi/linux/btf.h> -#include <asm/tlb.h> - #include "trace_probe.h" #include "trace.h"
In preparation for inlining copy_from_user_in_nmi(), move the nmi_uaccess_okay() declaration into uaccess.h, which makes a bit more sense anyway. Additionally update all callers to remove the no longer needed tlbflush.h include, which was only for the declaration of nmi_uaccess_okay(). Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: x86@kernel.org Cc: linux-perf-users@vger.kernel.org Cc: bpf@vger.kernel.org Cc: Matthew Wilcox <willy@infradead.org> Cc: Yu Zhao <yuzhao@google.com> Cc: dev@der-flo.net Signed-off-by: Kees Cook <keescook@chromium.org> --- arch/x86/events/core.c | 1 - arch/x86/include/asm/tlbflush.h | 3 --- arch/x86/include/asm/uaccess.h | 3 +++ arch/x86/lib/usercopy.c | 2 -- include/asm-generic/tlb.h | 9 --------- include/linux/uaccess.h | 9 +++++++++ kernel/trace/bpf_trace.c | 2 -- 7 files changed, 12 insertions(+), 17 deletions(-)