lkml.org 
[lkml]   [2018]   [Jan]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v10 17/27] powerpc: check key protection for user page access
    Date
    Make sure that the kernel does not access user pages without
    checking their key-protection.

    Signed-off-by: Ram Pai <linuxram@us.ibm.com>
    ---
    arch/powerpc/include/asm/book3s/64/pgtable.h | 19 +++++++++++++++++++
    1 files changed, 19 insertions(+), 0 deletions(-)

    diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
    index e785c68..3d8186e 100644
    --- a/arch/powerpc/include/asm/book3s/64/pgtable.h
    +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
    @@ -464,6 +464,25 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,

    #ifdef CONFIG_PPC_MEM_KEYS
    extern bool arch_pte_access_permitted(u64 pte, bool write, bool execute);
    +
    +#define pte_access_permitted(pte, write) \
    + (pte_present(pte) && \
    + ((!(write) || pte_write(pte)) && \
    + arch_pte_access_permitted(pte_val(pte), !!write, 0)))
    +
    +/*
    + * We store key in pmd/pud for huge pages. Need to check for key protection.
    + */
    +#define pmd_access_permitted(pmd, write) \
    + (pmd_present(pmd) && \
    + ((!(write) || pmd_write(pmd)) && \
    + arch_pte_access_permitted(pmd_val(pmd), !!write, 0)))
    +
    +#define pud_access_permitted(pud, write) \
    + (pud_present(pud) && \
    + ((!(write) || pud_write(pud)) && \
    + arch_pte_access_permitted(pud_val(pud), !!write, 0)))
    +
    #endif /* CONFIG_PPC_MEM_KEYS */

    #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
    --
    1.7.1
    \
     
     \ /
      Last update: 2018-01-19 02:57    [W:2.543 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site