Re: [PATCH 4/7] x86: Add support for rd/wr fs/gs base

H. Peter Anvin
2014-04-30T04:52:42Z

On 04/29/2014 04:39 PM, Andi Kleen wrote:
>> Case 3 is annoying. If nothing tries to change the user gs base, then
>> everything is okay because the user gs base and the kernel gs bases are
>> equal. But if something does try to change the user gs base, then it
>> will accidentally change the kernel gs base instead.
>
> It doesn't really matter, as they are the same.
> They would just switch identities.
>
> Besides I don't think anyone does that.
>

It matters -- greatly -- if (and only if) we can enter the kernel with
usergs == kernelgs and then want to change usergs inside a paranoid
routine. At that point we risk being upside down, which basically means
we're rooted.

However, I believe this patchset also means only IST entries can be
paranoid, which in turn means we can't sleep inside them. To the very
best of my knowledge the only times we change usergs is on context
switch or inside a system call. We need to make sure that is actually
the case, though.

I'm at ELC for a few days, so I'll have limited decent-sized-monitor
time, but it shouldn't be too hard to convince ourselves of... mostly a
matter of making sure something like ptrace can't to stupid crap.

-hpa