lkml.org 
[lkml]   [2015]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH 23/26] [HIJACKPROT] x86, pkeys: add x86 version of arch_validate_prot()
From
Date

This allows more than just the traditional PROT_* flags to
be passed in to mprotect(), etc... on x86.

---

b/arch/x86/include/uapi/asm/mman.h | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)

diff -puN arch/x86/include/uapi/asm/mman.h~pkeys-81-arch_validate_prot arch/x86/include/uapi/asm/mman.h
--- a/arch/x86/include/uapi/asm/mman.h~pkeys-81-arch_validate_prot 2015-09-16 09:45:54.564432490 -0700
+++ b/arch/x86/include/uapi/asm/mman.h 2015-09-16 09:45:54.567432626 -0700
@@ -6,6 +6,8 @@
#define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
#define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT)

+#include <asm-generic/mman.h>
+
#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
/*
* Take the 4 protection key bits out of the vma->vm_flags
@@ -26,8 +28,20 @@
((prot) & PROT_PKEY1 ? VM_PKEY_BIT1 : 0) | \
((prot) & PROT_PKEY2 ? VM_PKEY_BIT2 : 0) | \
((prot) & PROT_PKEY3 ? VM_PKEY_BIT3 : 0))
-#endif

-#include <asm-generic/mman.h>
+#ifndef arch_validate_prot
+/*
+ * This is called from mprotect(). PROT_GROWSDOWN and PROT_GROWSUP have
+ * already been masked out.
+ *
+ * Returns true if the prot flags are valid
+ */
+#define arch_validate_prot(prot) (\
+ (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_SEM | \
+ PROT_PKEY0 | PROT_PKEY1 | PROT_PKEY2 | PROT_PKEY3)) == 0) \
+
+#endif /* arch_validate_prot */
+
+#endif /* CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS */

#endif /* _ASM_X86_MMAN_H */
_

\
 
 \ /
  Last update: 2015-09-16 20:21    [W:0.509 / U:0.508 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site