diff options
author | Doug Chapman <doug.chapman@hp.com> | 2009-01-15 13:38:56 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2009-01-15 13:38:56 -0500 |
commit | 88fc241f54459ac3d86c5e13b449730199f66061 (patch) | |
tree | d8148e145e9252b76b12b8d466ff3ecbfa4222ea /arch | |
parent | 0773a6cf673316440999752e23f8c3d4f85e48b9 (diff) |
[IA64] dump stack on kernel unaligned warnings
Often the cause of kernel unaligned access warnings is not
obvious from just the ip displayed in the warning. This adds
the option via proc to dump the stack in addition to the warning.
The default is off (just display the 1 line warning). To enable
the stack to be shown: echo 1 > /proc/sys/kernel/unaligned-dump-stack
Signed-off-by: Doug Chapman <doug.chapman@hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/unaligned.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c index ff0e7c10faa7..6db08599ebbc 100644 --- a/arch/ia64/kernel/unaligned.c +++ b/arch/ia64/kernel/unaligned.c | |||
@@ -59,6 +59,7 @@ dump (const char *str, void *vp, size_t len) | |||
59 | * (i.e. don't allow attacker to fill up logs with unaligned accesses). | 59 | * (i.e. don't allow attacker to fill up logs with unaligned accesses). |
60 | */ | 60 | */ |
61 | int no_unaligned_warning; | 61 | int no_unaligned_warning; |
62 | int unaligned_dump_stack; | ||
62 | static int noprint_warning; | 63 | static int noprint_warning; |
63 | 64 | ||
64 | /* | 65 | /* |
@@ -1371,9 +1372,12 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs) | |||
1371 | } | 1372 | } |
1372 | } | 1373 | } |
1373 | } else { | 1374 | } else { |
1374 | if (within_logging_rate_limit()) | 1375 | if (within_logging_rate_limit()) { |
1375 | printk(KERN_WARNING "kernel unaligned access to 0x%016lx, ip=0x%016lx\n", | 1376 | printk(KERN_WARNING "kernel unaligned access to 0x%016lx, ip=0x%016lx\n", |
1376 | ifa, regs->cr_iip + ipsr->ri); | 1377 | ifa, regs->cr_iip + ipsr->ri); |
1378 | if (unaligned_dump_stack) | ||
1379 | dump_stack(); | ||
1380 | } | ||
1377 | set_fs(KERNEL_DS); | 1381 | set_fs(KERNEL_DS); |
1378 | } | 1382 | } |
1379 | 1383 | ||