Revision 61f01dd941ba9e06d2bf05994450ecc3d61b6b8b authored by Andy Lutomirski on 26 April 2015, 23:47:59 UTC, committed by Linus Torvalds on 27 April 2015, 00:57:38 UTC
AMD CPUs don't reinitialize the SS descriptor on SYSRET, so SYSRET with SS == 0 results in an invalid usermode state in which SS is apparently equal to __USER_DS but causes #SS if used. Work around the issue by setting SS to __KERNEL_DS __switch_to, thus ensuring that SYSRET never happens with SS set to NULL. This was exposed by a recent vDSO cleanup. Fixes: e7d6eefaaa44 x86/vdso32/syscall.S: Do not load __USER32_DS to %ss Signed-off-by: Andy Lutomirski <luto@kernel.org> Cc: Peter Anvin <hpa@zytor.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Denys Vlasenko <vda.linux@googlemail.com> Cc: Brian Gerst <brgerst@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 1190944
File | Mode | Size |
---|---|---|
Kbuild | -rw-r--r-- | 675 bytes |
asm-offsets.h | -rw-r--r-- | 35 bytes |
axisflashmap.h | -rw-r--r-- | 1.9 KB |
bitops.h | -rw-r--r-- | 1.2 KB |
bug.h | -rw-r--r-- | 69 bytes |
bugs.h | -rw-r--r-- | 300 bytes |
cache.h | -rw-r--r-- | 94 bytes |
cacheflush.h | -rw-r--r-- | 1.3 KB |
checksum.h | -rw-r--r-- | 2.0 KB |
current.h | -rw-r--r-- | 268 bytes |
delay.h | -rw-r--r-- | 498 bytes |
dma-mapping.h | -rw-r--r-- | 4.1 KB |
dma.h | -rw-r--r-- | 419 bytes |
elf.h | -rw-r--r-- | 2.7 KB |
eshlibld.h | -rw-r--r-- | 3.5 KB |
etraxi2c.h | -rw-r--r-- | 980 bytes |
fasttimer.h | -rw-r--r-- | 1.1 KB |
fb.h | -rw-r--r-- | 205 bytes |
ftrace.h | -rw-r--r-- | 12 bytes |
hw_irq.h | -rw-r--r-- | 53 bytes |
io.h | -rw-r--r-- | 5.5 KB |
irq.h | -rw-r--r-- | 155 bytes |
irqflags.h | -rw-r--r-- | 27 bytes |
mmu.h | -rw-r--r-- | 116 bytes |
mmu_context.h | -rw-r--r-- | 762 bytes |
mutex.h | -rw-r--r-- | 308 bytes |
page.h | -rw-r--r-- | 2.5 KB |
pci.h | -rw-r--r-- | 1.5 KB |
pgalloc.h | -rw-r--r-- | 1.4 KB |
pgtable.h | -rw-r--r-- | 9.5 KB |
processor.h | -rw-r--r-- | 1.9 KB |
ptrace.h | -rw-r--r-- | 354 bytes |
segment.h | -rw-r--r-- | 109 bytes |
serial.h | -rw-r--r-- | 172 bytes |
shmparam.h | -rw-r--r-- | 193 bytes |
signal.h | -rw-r--r-- | 466 bytes |
string.h | -rw-r--r-- | 469 bytes |
swab.h | -rw-r--r-- | 120 bytes |
switch_to.h | -rw-r--r-- | 410 bytes |
termios.h | -rw-r--r-- | 1.7 KB |
thread_info.h | -rw-r--r-- | 2.4 KB |
timex.h | -rw-r--r-- | 394 bytes |
tlb.h | -rw-r--r-- | 414 bytes |
tlbflush.h | -rw-r--r-- | 1.0 KB |
types.h | -rw-r--r-- | 189 bytes |
uaccess.h | -rw-r--r-- | 11.6 KB |
ucontext.h | -rw-r--r-- | 283 bytes |
unaligned.h | -rw-r--r-- | 306 bytes |
unistd.h | -rw-r--r-- | 933 bytes |
user.h | -rw-r--r-- | 2.1 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...