Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1527304

Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot?

From Ingo Molnar <mingo@kernel.org>
Newsgroups linux.kernel
Subject Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot?
Date 2016-11-22 09:40 +0100
Message-ID <sGeMp-4LC-5@gated-at.bofh.it> (permalink)
References <sFpAe-4sJ-11@gated-at.bofh.it> <sFpTz-4UY-1@gated-at.bofh.it> <sFpTA-4UY-5@gated-at.bofh.it> <sFRd8-6zi-15@gated-at.bofh.it> <sG1ct-4DY-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> On Sun, Nov 20, 2016 at 11:13 PM, Ingo Molnar <mingo@kernel.org> wrote:
> >
> > So I have applied your fix that addresses the worst fallout directly:
> >
> >   fc0e81b2bea0 x86/traps: Ignore high word of regs->cs in early_fixup_exception()
> >
> > ... but otherwise we might be better off zeroing out the high bits of segment
> > registers stored on the stack, in all entry code pathways
> 
> Ugh.
> 
> I'd much rather we go back to just making the "cs" entry explicitly
> 16-bit, and have a separate padding entry, the way we used to long
> long ago.
> 
> Or just rename it to something that you're not supposed to access
> directly, and a helper accessor function that masks off the high bits.
> 
> The entry code-paths are *much* more critical than any of the few user
> codepaths.

Absolutely, no arguments about that!

> [...] Let's not add complexity to entry. Make the structure actually reflect 
> reality instead.

So I have no problems at all with your suggestion either.

I am still trying to semi-defend my suggestion as well, because if we do what I 
suggested:

> > [...] so that the function call is patched out on modern CPUs.

then it's essentially an opt-in quirk for really old CPUs and won't impact new 
CPUs, other than a single NOP for the patched out bits - and not even that on 
kernel builds with M686 or later or so ...

I.e. the quirk essentially implements what new CPUs do (in C), and then all 
remaining code can just assume that all data is properly initialized/zeroed like 
on new CPUs and the effects of the quirk does not spread to data structures and 
code that handles and copies around those data structures - unless I'm missing 
something.

Thanks,

	Ingo

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Andy Lutomirski <luto@kernel.org> - 2016-11-20 03:00 +0100
  Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Brian Gerst <brgerst@gmail.com> - 2016-11-20 03:20 +0100
    Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Andy Lutomirski <luto@amacapital.net> - 2016-11-20 03:20 +0100
      Re: What exactly do 32-bit x86 exceptions push on the stack in the  CS slot? Ingo Molnar <mingo@kernel.org> - 2016-11-21 08:30 +0100
        Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Linus Torvalds <torvalds@linux-foundation.org> - 2016-11-21 19:10 +0100
          Re: What exactly do 32-bit x86 exceptions push on the stack in the CS  slot? "H. Peter Anvin" <hpa@zytor.com> - 2016-11-21 19:40 +0100
            Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Linus Torvalds <torvalds@linux-foundation.org> - 2016-11-21 22:30 +0100
              Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Linus Torvalds <torvalds@linux-foundation.org> - 2016-11-21 23:30 +0100
              Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? hpa@zytor.com - 2016-11-21 23:30 +0100
              Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Andy Lutomirski <luto@amacapital.net> - 2016-11-24 18:20 +0100
          Re: What exactly do 32-bit x86 exceptions push on the stack in the  CS slot? Ingo Molnar <mingo@kernel.org> - 2016-11-22 09:40 +0100
            Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Andy Lutomirski <luto@amacapital.net> - 2016-11-22 18:40 +0100
              Re: What exactly do 32-bit x86 exceptions push on the stack in the  CS slot? Ingo Molnar <mingo@kernel.org> - 2016-11-23 10:00 +0100
  Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? hpa@zytor.com - 2016-11-21 07:00 +0100
    Re: What exactly do 32-bit x86 exceptions push on the stack in the CS  slot? "H. Peter Anvin" <hpa@zytor.com> - 2016-11-21 17:10 +0100
      Re: What exactly do 32-bit x86 exceptions push on the stack in the CS slot? Linus Torvalds <torvalds@linux-foundation.org> - 2016-11-21 19:30 +0100

csiph-web