diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2009-03-26 10:23:42 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-03-26 10:24:02 -0400 |
commit | d7fd5f1e3b195a8232b3ed768ac2809ddce8ca46 (patch) | |
tree | 04ae112ccff5a301dd600d34aa43ca0abb67fc02 /arch/s390/kernel/traps.c | |
parent | 8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84 (diff) |
[S390] fix dump_stack vs. %p and (null)
The s390 implemenation of dump_stack uses %p to display stack content.
Since d97106ab53f812910a62d18afb9dbe882819c1ba (Make %p print '(null)'
for NULL pointers) this causes a strange output for dump_stack:
[...]
Process basename (pid: 8822, task: 00000000b2ece038, ksp: 00000000b24d7b38)
04000000b5685c00 00000000b24d7760 0000000000000002 (null)
00000000b24d7800 00000000b24d7778 00000000b24d7778 00000000001052fe
(null) 00000000b24d7b38 (null) 000000000000000a
000000000000000d (null) 00000000b24d7760 00000000b24d77d8
000000000051a7e8 00000000001052fe 00000000b24d7760 00000000b24d77b0
Call Trace:
[...]
This patch changes our dump_stack to use the appropriate %x format.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/traps.c')
-rw-r--r-- | arch/s390/kernel/traps.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 4584d81984c0..c2e42cc65ce7 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -61,9 +61,11 @@ extern pgm_check_handler_t do_asce_exception; | |||
61 | #define stack_pointer ({ void **sp; asm("la %0,0(15)" : "=&d" (sp)); sp; }) | 61 | #define stack_pointer ({ void **sp; asm("la %0,0(15)" : "=&d" (sp)); sp; }) |
62 | 62 | ||
63 | #ifndef CONFIG_64BIT | 63 | #ifndef CONFIG_64BIT |
64 | #define LONG "%08lx " | ||
64 | #define FOURLONG "%08lx %08lx %08lx %08lx\n" | 65 | #define FOURLONG "%08lx %08lx %08lx %08lx\n" |
65 | static int kstack_depth_to_print = 12; | 66 | static int kstack_depth_to_print = 12; |
66 | #else /* CONFIG_64BIT */ | 67 | #else /* CONFIG_64BIT */ |
68 | #define LONG "%016lx " | ||
67 | #define FOURLONG "%016lx %016lx %016lx %016lx\n" | 69 | #define FOURLONG "%016lx %016lx %016lx %016lx\n" |
68 | static int kstack_depth_to_print = 20; | 70 | static int kstack_depth_to_print = 20; |
69 | #endif /* CONFIG_64BIT */ | 71 | #endif /* CONFIG_64BIT */ |
@@ -155,7 +157,7 @@ void show_stack(struct task_struct *task, unsigned long *sp) | |||
155 | break; | 157 | break; |
156 | if (i && ((i * sizeof (long) % 32) == 0)) | 158 | if (i && ((i * sizeof (long) % 32) == 0)) |
157 | printk("\n "); | 159 | printk("\n "); |
158 | printk("%p ", (void *)*stack++); | 160 | printk(LONG, *stack++); |
159 | } | 161 | } |
160 | printk("\n"); | 162 | printk("\n"); |
161 | show_trace(task, sp); | 163 | show_trace(task, sp); |