Re: [tip:x86/pti] x86/pti: Make sure the user/kernel PTEs match

From: Thomas Gleixner
Date: Tue Feb 13 2018 - 10:59:36 EST


On Fri, 9 Feb 2018, Dave Hansen wrote:
> On 01/03/2018 08:22 AM, tip-bot for Thomas Gleixner wrote:
> > --- a/arch/x86/mm/pti.c
> > +++ b/arch/x86/mm/pti.c
> > @@ -367,7 +367,8 @@ static void __init pti_setup_espfix64(void)
> > static void __init pti_clone_entry_text(void)
> > {
> > pti_clone_pmds((unsigned long) __entry_text_start,
> > - (unsigned long) __irqentry_text_end, _PAGE_RW);
> > + (unsigned long) __irqentry_text_end,
> > + _PAGE_RW | _PAGE_GLOBAL);
> > }
>
> We appear to have lost all of our global bits between this and the
> cpu_entry_area itself. To make K8 happy, shouldn't we just *set*
> _PAGE_GLOBAL universally instead of clearing it universally?
>
> Also, don't we want _PAGE_GLOBAL in the cpu_entry_area.c pte setting? I
> think I had this for all the shared user/kernel areas near the end of
> the KAISER era, but we appear to have totally nuked it for PTI.

Yes, we did due to the usage of supported_pte_flags vs. the hard coded
compile time thing. It was on my todo list to flag the shared areas global,
but I somehow nuked that item in a vein attempt to shrink that list :)
We surely should revisit that.

Thanks,

tglx