Re: [PATCH 2/2] x86_64,signal: Remove 'fs' and 'gs' from sigcontext

From: Andy Lutomirski
Date: Sat Jul 12 2014 - 04:39:46 EST


On Jul 11, 2014 7:21 PM, "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Fri, Jul 11, 2014 at 9:29 AM, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
> > As far as I can tell, these fields have been set to zero on save and
> > ignored on restore since Linux was imported into git. Rename them
> > '__pad1' and '__pad2' to avoid confusion and to allow them to be
> > recycled some day.
>
> Shouldn't we actually try to save/restore gs/fs properly? Admittedly,
> changing them in the signal handler would be insane, but still.. See
> our context switching code with the whole segment selector vs base
> save/restore code. Hmm?

This seems like it's asking for trouble. I think wxe'd have to
separately save the selectors and the base registers to avoid breaking
something, especially once wrgsbase, etc are enabled.

Why would this be needed anyway?

Does anyone implement makecontext, etc using raise/sigreturn? If so,
they might be in for a surprise when their gs starts getting saved,
too.

Linus, for context, the other patch in this series saves and restores
SS. Without that, 64-bit sigreturn to a nondefault stack segment is
basically impossible. But I don't see why any other segments (besides
CS) are needed for 64-bit sigreturn.

--Andy

>
> Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/