lkml.org 
[lkml]   [2018]   [Jul]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 19/39] x86/pgtable: Move pti_set_user_pgtbl() to pgtable.h
    Date
    From: Joerg Roedel <jroedel@suse.de>

    There it is also usable from 32 bit code.

    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    ---
    arch/x86/include/asm/pgtable.h | 23 +++++++++++++++++++++++
    1 file changed, 23 insertions(+)

    diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
    index eb47432..cc117161 100644
    --- a/arch/x86/include/asm/pgtable.h
    +++ b/arch/x86/include/asm/pgtable.h
    @@ -640,8 +640,31 @@ static inline int is_new_memtype_allowed(u64 paddr, unsigned long size,

    pmd_t *populate_extra_pmd(unsigned long vaddr);
    pte_t *populate_extra_pte(unsigned long vaddr);
    +
    +#ifdef CONFIG_PAGE_TABLE_ISOLATION
    +pgd_t __pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd);
    +
    +/*
    + * Take a PGD location (pgdp) and a pgd value that needs to be set there.
    + * Populates the user and returns the resulting PGD that must be set in
    + * the kernel copy of the page tables.
    + */
    +static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
    +{
    + if (!static_cpu_has(X86_FEATURE_PTI))
    + return pgd;
    + return __pti_set_user_pgtbl(pgdp, pgd);
    +}
    +#else /* CONFIG_PAGE_TABLE_ISOLATION */
    +static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
    +{
    + return pgd;
    +}
    +#endif /* CONFIG_PAGE_TABLE_ISOLATION */
    +
    #endif /* __ASSEMBLY__ */

    +
    #ifdef CONFIG_X86_32
    # include <asm/pgtable_32.h>
    #else
    --
    2.7.4
    \
     
     \ /
      Last update: 2018-07-18 11:45    [W:4.612 / U:0.260 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site