summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNadav Amit <namit@vmware.com>2019-04-25 20:11:42 -0400
committerIngo Molnar <mingo@kernel.org>2019-04-30 06:37:48 -0400
commit5932c9fd19e6e5ac84756c5c32fe5155d9a6b458 (patch)
treeb20b7288dfba103ee9ac7ea05d3f066a0aad3139
parente836673c9b4966bc78e38aeda25f7022c57f0e90 (diff)
mm/tlb: Provide default nmi_uaccess_okay()
x86 has an nmi_uaccess_okay(), but other architectures do not. Arch-independent code might need to know whether access to user addresses is ok in an NMI context or in other code whose execution context is unknown. Specifically, this function is needed for bpf_probe_write_user(). Add a default implementation of nmi_uaccess_okay() for architectures that do not have such a function. Signed-off-by: Nadav Amit <namit@vmware.com> Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: <akpm@linux-foundation.org> Cc: <ard.biesheuvel@linaro.org> Cc: <deneen.t.dock@intel.com> Cc: <kernel-hardening@lists.openwall.com> Cc: <kristen@linux.intel.com> Cc: <linux_dti@icloud.com> Cc: <will.deacon@arm.com> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rik van Riel <riel@surriel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20190426001143.4983-23-namit@vmware.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/include/asm/tlbflush.h2
-rw-r--r--include/asm-generic/tlb.h9
2 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
index f4204bf377fc..e9eae3d6ef02 100644
--- a/arch/x86/include/asm/tlbflush.h
+++ b/arch/x86/include/asm/tlbflush.h
@@ -274,6 +274,8 @@ static inline bool nmi_uaccess_okay(void)
274 return true; 274 return true;
275} 275}
276 276
277#define nmi_uaccess_okay nmi_uaccess_okay
278
277/* Initialize cr4 shadow for this CPU. */ 279/* Initialize cr4 shadow for this CPU. */
278static inline void cr4_init_shadow(void) 280static inline void cr4_init_shadow(void)
279{ 281{
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
index 6be86c1c5c58..075b353cae86 100644
--- a/include/asm-generic/tlb.h
+++ b/include/asm-generic/tlb.h
@@ -20,6 +20,15 @@
20#include <asm/pgalloc.h> 20#include <asm/pgalloc.h>
21#include <asm/tlbflush.h> 21#include <asm/tlbflush.h>
22 22
23/*
24 * Blindly accessing user memory from NMI context can be dangerous
25 * if we're in the middle of switching the current user task or switching
26 * the loaded mm.
27 */
28#ifndef nmi_uaccess_okay
29# define nmi_uaccess_okay() true
30#endif
31
23#ifdef CONFIG_MMU 32#ifdef CONFIG_MMU
24 33
25#ifdef CONFIG_HAVE_RCU_TABLE_FREE 34#ifdef CONFIG_HAVE_RCU_TABLE_FREE