alistair23-linux/arch/s390/kernel
Martin Schwidefsky 6551fbdfd8 s390: critical section cleanup vs. machine checks
The current machine check code uses the registers stored by the machine
in the lowcore at __LC_GPREGS_SAVE_AREA as the registers of the interrupted
context. The registers 0-7 of a user process can get clobbered if a machine
checks interrupts the execution of a critical section in entry[64].S.

The reason is that the critical section cleanup code may need to modify
the PSW and the registers for the previous context to get to the end of a
critical section. If registers 0-7 have to be replaced the relevant copy
will be in the registers, which invalidates the copy in the lowcore. The
machine check handler needs to explicitly store registers 0-7 to the stack.

Cc: stable@vger.kernel.org
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2013-03-05 10:21:35 +01:00
..
vdso32
vdso64
.gitignore
asm-offsets.c
audit.c
audit.h
base.S
bitmap.c
cache.c s390/cache: fix data/instruction cache output 2012-10-18 17:50:11 +02:00
compat_audit.c
compat_exec_domain.c
compat_linux.c s390: switch to generic compat sched_rr_get_interval() 2013-02-03 18:16:13 -05:00
compat_linux.h s390: switch to generic old sigaction() 2013-02-03 18:16:14 -05:00
compat_ptrace.h
compat_signal.c s390/uaccess: remove pointless access_ok() checks 2013-02-28 09:37:09 +01:00
compat_wrapper.S fix compat truncate/ftruncate 2013-02-25 09:24:55 -05:00
cpcmd.c
crash_dump.c s390/crashdump: move fill_cpu_elf_notes() prototype to header file 2012-09-26 15:45:22 +02:00
debug.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
diag.c
dis.c s390/dis: Fix invalid array size 2013-02-28 09:37:09 +01:00
early.c s390/cleanup: rename SPP to LPP 2013-02-14 15:55:24 +01:00
ebcdic.c
entry.h s390: switch to generic old sigaction() 2013-02-03 18:16:14 -05:00
entry.S s390: critical section cleanup vs. machine checks 2013-03-05 10:21:35 +01:00
entry64.S s390: critical section cleanup vs. machine checks 2013-03-05 10:21:35 +01:00
ftrace.c
head.S s390: add zEC12 code generation support 2012-11-23 11:14:31 +01:00
head31.S s390/mm: let kernel text section always begin at 1MB 2012-10-09 14:16:59 +02:00
head64.S s390/mm: let kernel text section always begin at 1MB 2012-10-09 14:16:59 +02:00
head_kdump.S s390/kdump: Use 64 bit mode for 0x10000 entry point 2012-10-18 17:50:09 +02:00
ipl.c s390/ipl: Implement diag308 loop for zfcpdump 2013-02-14 15:55:05 +01:00
irq.c Merge tag 'kvm-3.9-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2013-02-24 13:07:18 -08:00
jump_label.c
kprobes.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
lgr.c
machine_kexec.c s390/crashdump: move fill_cpu_elf_notes() prototype to header file 2012-09-26 15:45:22 +02:00
Makefile s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
mcount.S
mcount64.S
mem_detect.c
module.c s390/module: fix compile warning 2013-02-28 09:37:13 +01:00
nmi.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
os_info.c
perf_cpum_cf.c s390/perf: cpum_cf: fallback to software sampling events 2013-02-14 15:55:15 +01:00
perf_event.c
pgm_check.S s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
process.c flagday: don't pass regs to copy_thread() 2012-11-28 23:43:42 -05:00
processor.c
ptrace.c s390/ptrace: add missing ifdef 2012-09-26 15:45:21 +02:00
reipl.S
reipl64.S
relocate_kernel.S
relocate_kernel64.S
runtime_instr.c s390/irq: remove split irq fields from /proc/stat 2013-01-08 10:57:07 +01:00
s390_ksyms.c
sclp.S s390/sclp: fix addressing mode clobber 2012-11-06 22:39:51 +01:00
setup.c s390/pm: export pm_power_off 2013-01-08 10:57:09 +01:00
signal.c s390/uaccess: remove pointless access_ok() checks 2013-02-28 09:37:09 +01:00
smp.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
stacktrace.c
suspend.c
swsusp_asm64.S
sys_s390.c
syscalls.S fix compat truncate/ftruncate 2013-02-25 09:24:55 -05:00
sysinfo.c
time.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
topology.c s390/topology: export cpu_topology 2013-01-08 10:57:10 +01:00
traps.c taint: add explicit flag to show whether lock dep is still OK. 2013-01-21 17:17:57 +10:30
vdso.c
vmlinux.lds.S s390/linker skript: discard exit.data at runtime 2013-02-14 15:55:21 +01:00
vtime.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2013-02-21 17:54:03 -08:00