lkml.org 
[lkml]   [2018]   [Jul]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 26/39] x86/mm/pti: Clone CPU_ENTRY_AREA on PMD level on x86_32
    Date
    From: Joerg Roedel <jroedel@suse.de>

    Cloning on the P4D level would clone the complete kernel
    address space into the user-space page-tables for PAE
    kernels. Cloning on PMD level is fine for PAE and legacy
    paging.

    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    ---
    arch/x86/mm/pti.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c
    index dc02fd4..2eadab0 100644
    --- a/arch/x86/mm/pti.c
    +++ b/arch/x86/mm/pti.c
    @@ -348,6 +348,7 @@ pti_clone_pmds(unsigned long start, unsigned long end, pmdval_t clear)
    }
    }

    +#ifdef CONFIG_X86_64
    /*
    * Clone a single p4d (i.e. a top-level entry on 4-level systems and a
    * next-level entry on 5-level systems.
    @@ -371,6 +372,25 @@ static void __init pti_clone_user_shared(void)
    pti_clone_p4d(CPU_ENTRY_AREA_BASE);
    }

    +#else /* CONFIG_X86_64 */
    +
    +/*
    + * On 32 bit PAE systems with 1GB of Kernel address space there is only
    + * one pgd/p4d for the whole kernel. Cloning that would map the whole
    + * address space into the user page-tables, making PTI useless. So clone
    + * the page-table on the PMD level to prevent that.
    + */
    +static void __init pti_clone_user_shared(void)
    +{
    + unsigned long start, end;
    +
    + start = CPU_ENTRY_AREA_BASE;
    + end = start + (PAGE_SIZE * CPU_ENTRY_AREA_PAGES);
    +
    + pti_clone_pmds(start, end, 0);
    +}
    +#endif /* CONFIG_X86_64 */
    +
    /*
    * Clone the ESPFIX P4D into the user space visible page table
    */
    --
    2.7.4
    \
     
     \ /
      Last update: 2018-07-11 13:32    [W:4.035 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site