• Dave Hansen's avatar
    x86/mm/pkeys: Add arch-specific VMA protection bits · 8f62c883
    Dave Hansen authored
    Lots of things seem to do:
    
            vma->vm_page_prot = vm_get_page_prot(flags);
    
    and the ptes get created right from things we pull out
    of ->vm_page_prot.  So it is very convenient if we can
    store the protection key in flags and vm_page_prot, just
    like the existing permission bits (_PAGE_RW/PRESENT).  It
    greatly reduces the amount of plumbing and arch-specific
    hacking we have to do in generic code.
    
    This also takes the new PROT_PKEY{0,1,2,3} flags and
    turns *those* in to VM_ flags for vma->vm_flags.
    
    The protection key values are stored in 4 places:
    	1. "prot" argument to system calls
    	2. vma->vm_flags, filled from the mmap "prot"
    	3. vma->vm_page prot, filled from vma->vm_flags
    	4. the PTE itself.
    
    The pseudocode for these for steps are as follows:
    
    	mmap(PROT_PKEY*)
    	vma->vm_flags 	  = ... | arch_calc_vm_prot_bits(mmap_prot);
    	vma->vm_page_prot = ... | arch_vm_get_page_prot(vma->vm_flags);
    	pte = pfn | vma->vm_page_prot
    
    Note that this provides a new definitions for x86:
    
    	arch_vm_get_page_prot()
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave@sr71.net>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20160212210210.FE483A42@viggo.jf.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    8f62c883
mmu_context.h 7.92 KB