kernel-hacking-2024-linux-s.../arch/s390/kernel
Martin Schwidefsky eda0c6d6b0 s390: fix race on TIF_MCCK_PENDING
There is a small race window in the __switch_to code in regard to
the transfer of the TIF_MCCK_PENDING bit from the previous to the
next task. The bit is transferred before the task struct pointer
and the thread-info pointer for the next task has been stored to
lowcore. If a machine check sets the TIF_MCCK_PENDING bit between
the transfer code and the store of current/thread_info the bit
is still set for the previous task. And if the previous task has
terminated it can get lost. The effect is that a pending CRW is
not retrieved until the next machine checks sets TIF_MCCK_PENDING.
To fix this reorder __switch_to to first store the task struct
and thread-info pointer and then do the transfer of the bit.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2012-05-16 14:42:46 +02:00
..
vdso32 s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
vdso64 s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
asm-offsets.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
audit.c
audit.h
base.S [S390] entry[64].S improvements 2011-12-27 11:27:12 +01:00
bitmap.c
compat_audit.c
compat_exec_domain.c
compat_linux.c [S390] ipc: call generic sys_ipc demultiplexer 2011-12-27 11:27:13 +01:00
compat_linux.h
compat_ptrace.h
compat_signal.c s390: remove dead code from signal handler 2012-05-16 14:42:40 +02:00
compat_wrapper.S sys_poll: fix incorrect type for 'timeout' parameter 2012-02-21 17:24:20 -08:00
cpcmd.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
crash.c
crash_dump.c [S390] kernel: Add OS info memory interface 2012-03-11 11:59:29 -04:00
debug.c [S390] kernel: Add z/VM LGR detection 2012-03-11 11:59:29 -04:00
diag.c
dis.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
early.c s390/time: always use stckf instead of stck if available 2012-05-16 14:42:41 +02:00
ebcdic.c
entry.h [S390] irq: external interrupt code passing 2012-03-11 11:59:29 -04:00
entry.S s390: fix race on TIF_MCCK_PENDING 2012-05-16 14:42:46 +02:00
entry64.S s390: fix race on TIF_MCCK_PENDING 2012-05-16 14:42:46 +02:00
ftrace.c
head.S s390/ipl: remove builtin tape ipl code 2012-05-16 14:42:40 +02:00
head31.S
head64.S
head_kdump.S
init_task.c
ipl.c [S390] kernel: Add OS info memory interface 2012-03-11 11:59:29 -04:00
irq.c [S390] irq: simple coding style change 2012-04-11 14:28:25 +02:00
jump_label.c
kprobes.c
lgr.c [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
machine_kexec.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
Makefile [S390] perf: add support for s390x CPU counters 2012-03-23 11:13:25 +01:00
mcount.S
mcount64.S
mem_detect.c
module.c
nmi.c [S390] rework idle code 2012-03-11 11:59:28 -04:00
os_info.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
perf_cpum_cf.c [S390] cpum_cf: get rid of compile warnings 2012-04-11 14:28:25 +02:00
perf_event.c [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
process.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
processor.c
ptrace.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
reipl.S
reipl64.S [S390] entry[64].S improvements 2011-12-27 11:27:12 +01:00
relocate_kernel.S
relocate_kernel64.S
s390_ksyms.c
sclp.S
setup.c [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
signal.c s390: remove dead code from signal handler 2012-05-16 14:42:40 +02:00
smp.c s390/smp: get rid of compile warning 2012-05-16 14:42:37 +02:00
stacktrace.c
suspend.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
swsusp_asm64.S [S390] kernel: Add z/VM LGR detection 2012-03-11 11:59:29 -04:00
sys_s390.c [S390] ipc: call generic sys_ipc demultiplexer 2011-12-27 11:27:13 +01:00
syscalls.S
sysinfo.c
time.c [S390] irq: external interrupt code passing 2012-03-11 11:59:29 -04:00
topology.c [S390] rework smp code 2012-03-11 11:59:28 -04:00
traps.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
vdso.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
vmlinux.lds.S [S390] cleanup entry point definition 2012-01-18 18:03:41 +01:00
vtime.c [S390] irq: external interrupt code passing 2012-03-11 11:59:29 -04:00