linux/arch/s390/kernel
Martin Schwidefsky 39efd4ec9a s390/ptrace: race of single stepping vs signal delivery
The current single step code is racy in regard to concurrent delivery
of signals. If a signal is delivered after a PER program check occurred
but before the TIF_PER_TRAP bit has been checked in entry[64].S the code
clears TIF_PER_TRAP and then calls do_signal. This is wrong, if the
instruction completed (or has been suppressed) a SIGTRAP should be
delivered to the debugger in any case. Only if the instruction has been
nullified the SIGTRAP may not be send.

The new logic always sets TIF_PER_TRAP if the program check indicates PER
tracing but removes it again for all program checks that are nullifying.
The effect is that for each change in the PSW address we now get a
single SIGTRAP.

Reported-by: Andreas Arnez <arnez@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2012-11-23 11:14:33 +01: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 s390: add support for transactional memory 2012-09-26 15:45:02 +02:00
audit.c
audit.h
base.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
bitmap.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
cache.c s390/cache: fix data/instruction cache output 2012-10-18 17:50:11 +02:00
compat_audit.c
compat_exec_domain.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
compat_linux.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-10-10 12:02:25 +09:00
compat_linux.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-10-10 12:02:25 +09:00
compat_ptrace.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
compat_signal.c s390/signal: set correct address space control 2012-11-12 16:24:38 +01:00
compat_wrapper.S Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-10-10 12:02:25 +09:00
cpcmd.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
crash_dump.c s390/crashdump: move fill_cpu_elf_notes() prototype to header file 2012-09-26 15:45:22 +02:00
debug.c s390/debug: remove module_exit function / move EXPORT_SYMBOLs 2012-07-26 10:07:25 +02:00
diag.c [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c s390/disassembler: add new instructions 2012-11-23 11:14:33 +01:00
early.c s390/mm: use pfmf instruction to initialize storage keys 2012-10-09 14:16:55 +02:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry64.S s390/ptrace: race of single stepping vs signal delivery 2012-11-23 11:14:33 +01:00
entry.h s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
entry.S s390/ptrace: race of single stepping vs signal delivery 2012-11-23 11:14:33 +01:00
ftrace.c [S390] cleanup ftrace backend functions 2011-01-05 12:47: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
head.S s390: add zEC12 code generation support 2012-11-23 11:14:31 +01:00
ipl.c s390/ipl: Use diagnose 8 command separation 2012-07-26 10:07:26 +02:00
irq.c s390/irq: use designated initializers for irq class array 2012-09-26 15:45:23 +02:00
jump_label.c s390/jump-label: add arch_jump_label_transform_static() 2011-10-25 11:54:37 -07:00
kprobes.c s390/exceptions: switch to relative exception table entries 2012-09-26 15:45:10 +02:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
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
mcount64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
mcount.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
mem_detect.c [S390] Rework create_mem_hole() function 2011-12-27 11:27:09 +01:00
module.c s390/vmalloc: have separate modules area 2012-10-09 14:17:01 +02:00
nmi.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
os_info.c s390/smp: make absolute lowcore / cpu restart parameter accesses more robust 2012-06-14 09:09:02 +02:00
perf_cpum_cf.c perf_cpum_cf: Add support for counters available with IBM zEC12 2012-10-18 17:50:09 +02:00
perf_event.c [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
pgm_check.S s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
process.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-10-10 12:02:25 +09:00
processor.c s390/processor: use ARRAY_SIZE instead of hard coded value 2012-09-26 15:45:03 +02:00
ptrace.c s390/ptrace: add missing ifdef 2012-09-26 15:45:21 +02:00
reipl64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
reipl.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
runtime_instr.c s390/mm: rename addressing_mode to s390_user_mode 2012-09-26 15:45:05 +02:00
s390_ksyms.c s390/string: provide asm lib functions for memcpy and memcmp 2012-09-26 15:44:50 +02:00
sclp.S s390/sclp: fix addressing mode clobber 2012-11-06 22:39:51 +01:00
setup.c s390: add zEC12 code generation support 2012-11-23 11:14:31 +01:00
signal.c s390/ptrace: race of single stepping vs signal delivery 2012-11-23 11:14:33 +01:00
smp.c s390: add uninitialized_var() to suppress false positive compiler warnings 2012-09-26 15:45:23 +02:00
stacktrace.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
suspend.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
swsusp_asm64.S s390/sigp: use sigp order code defines in assembly code 2012-06-05 13:23:36 +02:00
sys_s390.c s390: do not clobber personality flags in sys_32_personality() 2012-08-08 07:32:56 -07:00
syscalls.S s390/syscalls: wire up kcmp system call 2012-09-26 15:45:17 +02:00
sysinfo.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
time.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-10-12 22:17:48 +09:00
topology.c s390/topology: cleanup topology code 2012-11-23 11:14:31 +01:00
traps.c s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
vdso.c s390/mm: rename addressing_mode to s390_user_mode 2012-09-26 15:45:05 +02:00
vmlinux.lds.S s390: fix linker script for 31 bit builds 2012-10-18 17:50:10 +02:00
vtime.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-10-01 11:49:56 -07:00