Commit 88fc241f54459ac3d86c5e13b449730199f66061

Authored by Doug Chapman
Committed by Tony Luck
1 parent 0773a6cf67

[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>

Showing 2 changed files with 14 additions and 1 deletions Side-by-side Diff

arch/ia64/kernel/unaligned.c
... ... @@ -59,6 +59,7 @@
59 59 * (i.e. don't allow attacker to fill up logs with unaligned accesses).
60 60 */
61 61 int no_unaligned_warning;
  62 +int unaligned_dump_stack;
62 63 static int noprint_warning;
63 64  
64 65 /*
65 66  
... ... @@ -1371,9 +1372,12 @@
1371 1372 }
1372 1373 }
1373 1374 } else {
1374   - if (within_logging_rate_limit())
  1375 + if (within_logging_rate_limit()) {
1375 1376 printk(KERN_WARNING "kernel unaligned access to 0x%016lx, ip=0x%016lx\n",
1376 1377 ifa, regs->cr_iip + ipsr->ri);
  1378 + if (unaligned_dump_stack)
  1379 + dump_stack();
  1380 + }
1377 1381 set_fs(KERNEL_DS);
1378 1382 }
1379 1383  
... ... @@ -144,6 +144,7 @@
144 144  
145 145 #ifdef CONFIG_IA64
146 146 extern int no_unaligned_warning;
  147 +extern int unaligned_dump_stack;
147 148 #endif
148 149  
149 150 #ifdef CONFIG_RT_MUTEXES
... ... @@ -779,6 +780,14 @@
779 780 .data = &no_unaligned_warning,
780 781 .maxlen = sizeof (int),
781 782 .mode = 0644,
  783 + .proc_handler = &proc_dointvec,
  784 + },
  785 + {
  786 + .ctl_name = CTL_UNNUMBERED,
  787 + .procname = "unaligned-dump-stack",
  788 + .data = &unaligned_dump_stack,
  789 + .maxlen = sizeof (int),
  790 + .mode = 0644,
782 791 .proc_handler = &proc_dointvec,
783 792 },
784 793 #endif