Re: [PATCH 03/18] x86/asm/64: Move SWAPGS into the common iret-to-usermode path

From: Dave Hansen
Date: Thu Oct 26 2017 - 10:14:09 EST


On 10/26/2017 06:52 AM, Brian Gerst wrote:
> On Thu, Oct 26, 2017 at 4:26 AM, Andy Lutomirski <luto@xxxxxxxxxx> wrote:
>> All of the code paths that ended up doing IRET to usermode did
>> SWAPGS immediately beforehand. Move the SWAPGS into the common
>> code.
>>
>> Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxx>
>
>> +GLOBAL(swapgs_restore_regs_and_return_to_usermode)
>
> Is adding swapgs to the label really necessary? It's redundant with
> the usermode part. I'm noticing a trend towards absurdly verbose
> labels lately.

I kinda appreciate the verbosity. When I see a jump to such a label, I
know explicitly what the jumper has to do. While it's possible that
every "return to usermode" spot in the kernel does a swapgs, it's not
patently obvious to me that every last one does that in every last
situation.

There are also places where we do register restoring after swapgs and
then return to userspace. It's nice to know what mode we are in and
what we are supposed to to just from the label.