Re: [patch 11/16] x86/ldt: Force access bit for CS/SS

From: Peter Zijlstra
Date: Tue Dec 12 2017 - 13:29:41 EST


On Tue, Dec 12, 2017 at 10:22:48AM -0800, Andy Lutomirski wrote:
>
> Also, why is LAR deferred to user exit? And I thought that LAR didn't
> set the accessed bit.

LAR does not set the ACCESSED bit indeed, we need to explicitly set that
when creating the descriptor.

It also works if you do the LAR right after LLDT (which is what I
originally had). The reason its a TIF flag is that I originally LAR'ed
every entry in the table.

It got reduced to CS/SS, but the TIF thing stayed.

> If I had to guess, I'd guess that LAR is actually generating a read
> fault and forcing the pagetables to get populated. If so, then it
> means the VMA code isn't quite right, or you're susceptible to
> failures under memory pressure.
>
> Now maybe LAR will repopulate the PTE every time if you were to never
> clear it, but ick.

I did not observe #PFs from LAR, we had a giant pile of trace_printk()
in there.