linux/arch/s390/kernel
Heiko Carstens 1bca09f714 s390/dumpstack: fix call chain walking
dumpstack() did not always print a sane callchain when being called.
The reason is that show_trace() accessed register 15 directly to get
the current stack pointer and passed that pointer to __show_trace()
which expects a valid stack frame pointer as argument.
However due to tail call optimization the stack frame may not exist
anymore when __show_trace() gets called and therefore an invalid
stack frame pointer gets passed.
To prevent that disable tail call optimization for call chain walking
functions.
So move all the show_* functions to a dumpstack.c file like other
architectures have it already and add a -fno-optimize-sibling-calls
compile flag to both dumpstack.c and stacktrace.c to prevent tail
call optimization.

Fixes callchains that looked e.g. like this:

[   12.868258] Call Trace:
[   12.868262] ([<0000000000008000>] 0x8000)

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2013-04-17 14:07:28 +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 s390: add support for transactional memory 2012-09-26 15:45:02 +02:00
audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
audit.h [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
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 [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
compat_exec_domain.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
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 [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
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 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 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 [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c s390/dis: use explicit buf len 2013-04-17 14:07:25 +02:00
dumpstack.c s390/dumpstack: fix call chain walking 2013-04-17 14:07:28 +02:00
early.c s390/cleanup: rename SPP to LPP 2013-02-14 15:55:24 +01:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry64.S s390: critical section cleanup vs. machine checks 2013-03-05 10:21:35 +01:00
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
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: 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 s390/jump-label: add arch_jump_label_transform_static() 2011-10-25 11:54:37 -07:00
kprobes.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390/kdump: Add PM notifier for kdump 2013-04-15 13:34:44 +02:00
Makefile s390/dumpstack: fix call chain walking 2013-04-17 14:07:28 +02: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/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 s390/smp: make absolute lowcore / cpu restart parameter accesses more robust 2012-06-14 09:09:02 +02:00
perf_cpum_cf.c s390/perf: cpum_cf: fallback to software sampling events 2013-02-14 15:55:15 +01: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 flagday: don't pass regs to copy_thread() 2012-11-28 23:43:42 -05: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/irq: remove split irq fields from /proc/stat 2013-01-08 10:57:07 +01: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/mm: fix vmemmap size calculation 2013-03-05 10:21:35 +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 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 fix compat truncate/ftruncate 2013-02-25 09:24:55 -05:00
sysinfo.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
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 s390/dumpstack: fix call chain walking 2013-04-17 14:07:28 +02:00
vdso.c s390/mm: rename addressing_mode to s390_user_mode 2012-09-26 15:45:05 +02:00
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