Re: [PATCH 02/23] x86, kaiser: do not set _PAGE_USER for init_mm page tables

From: Thomas Gleixner
Date: Wed Nov 01 2017 - 18:20:45 EST


On Wed, 1 Nov 2017, Linus Torvalds wrote:
> On Wed, Nov 1, 2017 at 2:52 PM, Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> wrote:
> > On 11/01/2017 02:28 PM, Thomas Gleixner wrote:
> >> On Wed, 1 Nov 2017, Andy Lutomirski wrote:
> >>> The vsyscall page is _PAGE_USER and lives in init_mm via the fixmap.
> >>
> >> Groan, forgot about that abomination, but still there is no point in having
> >> it marked PAGE_USER in the init_mm at all, kaiser or not.
> >
> > So shouldn't this patch effectively make the vsyscall page unusable?
> > Any idea why that didn't show up in any of the x86 selftests?
>
> I actually think there may be two issues here:
>
> - vsyscall isn't even used much - if any - any more

Only legacy user space uses it.

> - the vsyscall emulation works fine without _PAGE_USER, since the
> whole point is that we take a fault on it and then emulate.
>
> We do expose the vsyscall page read-only to user space in the
> emulation case, but I'm not convinced that's even required.

I don't see a reason why it needs to be mapped at all for emulation.

> Nobody who configures KAISER enabled would possibly want to have the
> actual native vsyscall page enabled. That would be an insane
> combination.
>
> So the only possibly difference would be a user mode program that
> actually looks at the vsyscall page, which sounds unlikely to be an
> issue. It's legacy and not really used.

Right, and we can either disable the NATIVE mode when KAISER is on or just
rip the native mode out completely. Most distros have native mode disabled
anyway, so you cannot even enable it on the kernel command line.

I'm all for ripping it out or at least removing the config switch to enable
native mode as a first step.

Thanks,

tglx