lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 18 Feb 2016 12:25:32 -0800 From: tip-bot for Dave Hansen <tipbot@...or.com> To: linux-tip-commits@...r.kernel.org Cc: paul.gortmaker@...driver.com, vdavydov@...tuozzo.com, yamada.masahiro@...ionext.com, luto@...capital.net, benh@...nel.crashing.org, brgerst@...il.com, dave@...1.net, oleg@...hat.com, mgorman@...e.de, peterz@...radead.org, airlied@...ux.ie, david@...morbit.com, leon@...n.nu, dan.j.williams@...el.com, mpe@...erman.id.au, tglx@...utronix.de, dave.hansen@...ux.intel.com, riel@...hat.com, koct9i@...il.com, mingo@...nel.org, gang.chen.5i5j@...il.com, linux-kernel@...r.kernel.org, dvlasenk@...hat.com, bp@...en8.de, torvalds@...ux-foundation.org, ebiederm@...ssion.com, mcoquelin.stm32@...il.com, aarcange@...hat.com, gregkh@...uxfoundation.org, geliangtang@....com, riandrews@...roid.com, akpm@...ux-foundation.org, hpa@...or.com, arve@...roid.com, paulus@...ba.org, kirill.shutemov@...ux.intel.com Subject: [tip:mm/pkeys] mm/core, arch, powerpc: Pass a protection key in to calc_vm_flag_bits() Commit-ID: e6bfb70959a0ca6ddedb29e779a293c6f71ed0e7 Gitweb: http://git.kernel.org/tip/e6bfb70959a0ca6ddedb29e779a293c6f71ed0e7 Author: Dave Hansen <dave.hansen@...ux.intel.com> AuthorDate: Fri, 12 Feb 2016 13:02:31 -0800 Committer: Ingo Molnar <mingo@...nel.org> CommitDate: Thu, 18 Feb 2016 19:46:30 +0100 mm/core, arch, powerpc: Pass a protection key in to calc_vm_flag_bits() This plumbs a protection key through calc_vm_flag_bits(). We could have done this in calc_vm_prot_bits(), but I did not feel super strongly which way to go. It was pretty arbitrary which one to use. Signed-off-by: Dave Hansen <dave.hansen@...ux.intel.com> Reviewed-by: Thomas Gleixner <tglx@...utronix.de> Cc: Andrea Arcangeli <aarcange@...hat.com> Cc: Andrew Morton <akpm@...ux-foundation.org> Cc: Andy Lutomirski <luto@...capital.net> Cc: Arve Hjønnevåg <arve@...roid.com> Cc: Benjamin Herrenschmidt <benh@...nel.crashing.org> Cc: Borislav Petkov <bp@...en8.de> Cc: Brian Gerst <brgerst@...il.com> Cc: Chen Gang <gang.chen.5i5j@...il.com> Cc: Dan Williams <dan.j.williams@...el.com> Cc: Dave Chinner <david@...morbit.com> Cc: Dave Hansen <dave@...1.net> Cc: David Airlie <airlied@...ux.ie> Cc: Denys Vlasenko <dvlasenk@...hat.com> Cc: Eric W. Biederman <ebiederm@...ssion.com> Cc: Geliang Tang <geliangtang@....com> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org> Cc: H. Peter Anvin <hpa@...or.com> Cc: Kirill A. Shutemov <kirill.shutemov@...ux.intel.com> Cc: Konstantin Khlebnikov <koct9i@...il.com> Cc: Leon Romanovsky <leon@...n.nu> Cc: Linus Torvalds <torvalds@...ux-foundation.org> Cc: Masahiro Yamada <yamada.masahiro@...ionext.com> Cc: Maxime Coquelin <mcoquelin.stm32@...il.com> Cc: Mel Gorman <mgorman@...e.de> Cc: Michael Ellerman <mpe@...erman.id.au> Cc: Oleg Nesterov <oleg@...hat.com> Cc: Paul Gortmaker <paul.gortmaker@...driver.com> Cc: Paul Mackerras <paulus@...ba.org> Cc: Peter Zijlstra <peterz@...radead.org> Cc: Rik van Riel <riel@...hat.com> Cc: Riley Andrews <riandrews@...roid.com> Cc: Vladimir Davydov <vdavydov@...tuozzo.com> Cc: devel@...verdev.osuosl.org Cc: linux-api@...r.kernel.org Cc: linux-arch@...r.kernel.org Cc: linux-kernel@...r.kernel.org Cc: linux-mm@...ck.org Cc: linuxppc-dev@...ts.ozlabs.org Link: http://lkml.kernel.org/r/20160212210231.E6F1F0D6@viggo.jf.intel.com Signed-off-by: Ingo Molnar <mingo@...nel.org> --- arch/powerpc/include/asm/mman.h | 5 +++-- drivers/char/agp/frontend.c | 2 +- drivers/staging/android/ashmem.c | 4 ++-- include/linux/mman.h | 6 +++--- mm/mmap.c | 2 +- mm/mprotect.c | 2 +- mm/nommu.c | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/arch/powerpc/include/asm/mman.h b/arch/powerpc/include/asm/mman.h index 8565c25..2563c43 100644 --- a/arch/powerpc/include/asm/mman.h +++ b/arch/powerpc/include/asm/mman.h @@ -18,11 +18,12 @@ * This file is included by linux/mman.h, so we can't use cacl_vm_prot_bits() * here. How important is the optimization? */ -static inline unsigned long arch_calc_vm_prot_bits(unsigned long prot) +static inline unsigned long arch_calc_vm_prot_bits(unsigned long prot, + unsigned long pkey) { return (prot & PROT_SAO) ? VM_SAO : 0; } -#define arch_calc_vm_prot_bits(prot) arch_calc_vm_prot_bits(prot) +#define arch_calc_vm_prot_bits(prot, pkey) arch_calc_vm_prot_bits(prot, pkey) static inline pgprot_t arch_vm_get_page_prot(unsigned long vm_flags) { diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c index 09f17eb..0f64d14 100644 --- a/drivers/char/agp/frontend.c +++ b/drivers/char/agp/frontend.c @@ -156,7 +156,7 @@ static pgprot_t agp_convert_mmap_flags(int prot) { unsigned long prot_bits; - prot_bits = calc_vm_prot_bits(prot) | VM_SHARED; + prot_bits = calc_vm_prot_bits(prot, 0) | VM_SHARED; return vm_get_page_prot(prot_bits); } diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c index 5bb1283..2695ff1 100644 --- a/drivers/staging/android/ashmem.c +++ b/drivers/staging/android/ashmem.c @@ -372,8 +372,8 @@ static int ashmem_mmap(struct file *file, struct vm_area_struct *vma) } /* requested protection bits must match our allowed protection mask */ - if (unlikely((vma->vm_flags & ~calc_vm_prot_bits(asma->prot_mask)) & - calc_vm_prot_bits(PROT_MASK))) { + if (unlikely((vma->vm_flags & ~calc_vm_prot_bits(asma->prot_mask, 0)) & + calc_vm_prot_bits(PROT_MASK, 0))) { ret = -EPERM; goto out; } diff --git a/include/linux/mman.h b/include/linux/mman.h index 16373c8..33e17f6 100644 --- a/include/linux/mman.h +++ b/include/linux/mman.h @@ -35,7 +35,7 @@ static inline void vm_unacct_memory(long pages) */ #ifndef arch_calc_vm_prot_bits -#define arch_calc_vm_prot_bits(prot) 0 +#define arch_calc_vm_prot_bits(prot, pkey) 0 #endif #ifndef arch_vm_get_page_prot @@ -70,12 +70,12 @@ static inline int arch_validate_prot(unsigned long prot) * Combine the mmap "prot" argument into "vm_flags" used internally. */ static inline unsigned long -calc_vm_prot_bits(unsigned long prot) +calc_vm_prot_bits(unsigned long prot, unsigned long pkey) { return _calc_vm_trans(prot, PROT_READ, VM_READ ) | _calc_vm_trans(prot, PROT_WRITE, VM_WRITE) | _calc_vm_trans(prot, PROT_EXEC, VM_EXEC) | - arch_calc_vm_prot_bits(prot); + arch_calc_vm_prot_bits(prot, pkey); } /* diff --git a/mm/mmap.c b/mm/mmap.c index e2e9f48..784d2d6 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1313,7 +1313,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr, * to. we assume access permissions have been handled by the open * of the memory object, so we don't do any here. */ - vm_flags |= calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) | + vm_flags |= calc_vm_prot_bits(prot, 0) | calc_vm_flag_bits(flags) | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; if (flags & MAP_LOCKED) diff --git a/mm/mprotect.c b/mm/mprotect.c index f7cb3d4..3790c8b 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -380,7 +380,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, if ((prot & PROT_READ) && (current->personality & READ_IMPLIES_EXEC)) prot |= PROT_EXEC; - vm_flags = calc_vm_prot_bits(prot); + vm_flags = calc_vm_prot_bits(prot, 0); down_write(¤t->mm->mmap_sem); diff --git a/mm/nommu.c b/mm/nommu.c index b64d04d..5ba39b8 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -1082,7 +1082,7 @@ static unsigned long determine_vm_flags(struct file *file, { unsigned long vm_flags; - vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags); + vm_flags = calc_vm_prot_bits(prot, 0) | calc_vm_flag_bits(flags); /* vm_flags |= mm->def_flags; */ if (!(capabilities & NOMMU_MAP_DIRECT)) {
Powered by blists - more mailing lists