linux_dsm_epyc7002/arch/x86/kernel
Andy Lutomirski 61f01dd941 x86_64, asm: Work around AMD SYSRET SS descriptor attribute issue
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: e7d6eefaaa 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>
2015-04-26 17:57:38 -07:00
..
acpi Initial ACPI support for arm64: 2015-04-24 08:23:45 -07:00
apic This is the final removal (after several years!) of the obsolete cpus_* 2015-04-20 10:19:03 -07:00
cpu x86_64, asm: Work around AMD SYSRET SS descriptor attribute issue 2015-04-26 17:57:38 -07:00
kprobes Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-14 14:37:47 -07:00
.gitignore
alternative.c x86/alternatives: Guard NOPs optimization 2015-04-06 09:24:09 +02:00
amd_gart_64.c
amd_nb.c
apb_timer.c
aperture_64.c
apm_32.c
asm-offsets_32.c x86/asm/entry/32: Document the 32-bit SYSENTER "emergency stack" better 2015-03-17 09:25:29 +01:00
asm-offsets_64.c x86/asm/entry/64/compat: Change the 32-bit sysenter code to use sp0 2015-03-06 08:32:58 +01:00
asm-offsets.c
audit_64.c
bootflag.c
check.c
cpuid.c
crash_dump_32.c
crash_dump_64.c
crash.c x86/asm/entry: Change all 'user_mode_vm()' calls to 'user_mode()' 2015-03-23 11:14:17 +01:00
devicetree.c x86/mm: Use early_memunmap() instead of early_iounmap() 2015-02-24 15:58:06 +01:00
doublefault.c
dumpstack_32.c Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-13 13:23:34 -07:00
dumpstack_64.c x86/kernel: Use kstack_end() in dumpstack_64.c 2015-02-23 18:37:13 +01:00
dumpstack.c Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-13 13:23:34 -07:00
e820.c Merge branch 'x86-pmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-18 11:42:49 -04:00
early_printk.c TTY/Serial patches for 4.1-rc1 2015-04-21 09:33:10 -07:00
early-quirks.c
entry_32.S x86/asm/entry/32: Tidy up JNZ instructions after TESTs 2015-04-11 10:40:02 +02:00
entry_64.S x86_64, asm: Work around AMD SYSRET SS descriptor attribute issue 2015-04-26 17:57:38 -07:00
espfix_64.c
ftrace.c
head32.c
head64.c Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-13 13:19:10 -07:00
head_32.S x86/asm/boot: Use already defined KEEP_SEGMENTS macro in head_{32,64}.S 2015-02-19 10:05:04 +01:00
head_64.S x86/asm: Optimize unnecessarily wide TEST instructions 2015-03-07 11:12:43 +01:00
head.c
hpet.c
hw_breakpoint.c
i386_ksyms_32.c
i387.c x86/fpu: Load xsave pointer *after* initialization 2015-04-17 10:15:47 +02:00
i8237.c
i8253.c
i8259.c
io_delay.c
ioport.c x86/asm/entry: Rename 'init_tss' to 'cpu_tss' 2015-03-06 08:32:58 +01:00
iosf_mbi.c
irq_32.c x86/asm/entry: Change all 'user_mode_vm()' calls to 'user_mode()' 2015-03-23 11:14:17 +01:00
irq_64.c x86/asm/entry: Change all 'user_mode_vm()' calls to 'user_mode()' 2015-03-23 11:14:17 +01:00
irq_work.c
irq.c x86: fix up obsolete cpu function usage. 2015-03-05 15:25:05 +10:30
irqinit.c x86/asm/entry/irq: Simplify interrupt dispatch table (IDT) layout 2015-04-08 09:02:13 +02:00
jump_label.c
kdebugfs.c
kexec-bzimage64.c
kgdb.c Linux 4.0-rc7 2015-04-08 09:01:54 +02:00
ksysfs.c
kvm.c watchdog: introduce the hardlockup_detector_disable() function 2015-04-14 16:48:59 -07:00
kvmclock.c
ldt.c
livepatch.c
machine_kexec_32.c
machine_kexec_64.c
Makefile Merge branch 'x86-pmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-18 11:42:49 -04:00
mcount_64.S
mmconf-fam10h_64.c
module.c x86/mm/KASLR: Propagate KASLR status to kernel proper 2015-04-03 15:26:15 +02:00
mpparse.c
msr.c
nmi_selftest.c
nmi.c
paravirt_patch_32.c
paravirt_patch_64.c
paravirt-spinlocks.c
paravirt.c x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00
pci-calgary_64.c
pci-dma.c
pci-iommu_table.c
pci-nommu.c
pci-swiotlb.c
pcspeaker.c
perf_regs.c perf/x86/64: Report regs_user->ax too in get_regs_user() 2015-04-11 13:08:53 +02:00
pmc_atom.c
pmem.c x86/mm: Add support for the non-standard protected e820 type 2015-04-01 17:02:43 +02:00
probe_roms.c
process_32.c x86/asm/entry: Get rid of KERNEL_STACK_OFFSET 2015-03-24 19:42:38 +01:00
process_64.c x86_64, asm: Work around AMD SYSRET SS descriptor attribute issue 2015-04-26 17:57:38 -07:00
process.c Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-13 13:24:23 -07:00
ptrace.c x86/asm/entry: Change all 'user_mode_vm()' calls to 'user_mode()' 2015-03-23 11:14:17 +01:00
pvclock.c x86: kvm: Revert "remove sched notifier for cross-cpu migrations" 2015-03-23 20:22:48 -03:00
quirks.c
reboot_fixups_32.c
reboot.c x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk 2015-04-01 14:08:09 +02:00
relocate_kernel_32.S x86/asm: Optimize unnecessarily wide TEST instructions 2015-03-07 11:12:43 +01:00
relocate_kernel_64.S x86/asm: Replace "MOVQ $imm, %reg" with MOVL 2015-04-01 13:17:39 +02:00
resource.c
rtc.c
setup_percpu.c
setup.c Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-13 13:31:32 -07:00
signal.c Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-18 11:31:11 -04:00
smp.c
smpboot.c Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-14 13:36:04 -07:00
stacktrace.c
step.c
sys_x86_64.c x86/mm: Improve AMD Bulldozer ASLR workaround 2015-03-31 10:01:17 +02:00
syscall_32.c x86/compat: Merge native and compat 32-bit syscall tables 2015-03-04 06:16:21 +01:00
syscall_64.c
sysfb_efi.c
sysfb_simplefb.c
sysfb.c
tboot.c
tce_64.c
test_nx.c
test_rodata.c treewide: Fix typo in printk messages 2015-03-06 23:05:39 +01:00
time.c x86/asm/entry: Change all 'user_mode_vm()' calls to 'user_mode()' 2015-03-23 11:14:17 +01:00
tls.c
tls.h
topology.c
trace_clock.c
tracepoint.c
traps.c Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-14 13:58:48 -07:00
tsc_msr.c
tsc_sync.c
tsc.c
uprobes.c x86/asm/entry: Change all 'user_mode_vm()' calls to 'user_mode()' 2015-03-23 11:14:17 +01:00
verify_cpu.S
vm86_32.c x86/asm/entry: Rename 'init_tss' to 'cpu_tss' 2015-03-06 08:32:58 +01:00
vmlinux.lds.S
vsmp_64.c
vsyscall_64.c
vsyscall_emu_64.S
vsyscall_gtod.c time: Rename timekeeper::tkr to timekeeper::tkr_mono 2015-03-27 09:45:06 +01:00
vsyscall_trace.h
x86_init.c
x8664_ksyms_64.c
xsave.c x86/fpu: Kill eager_fpu_init_bp() 2015-03-23 10:14:00 +01:00