aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/traps_32.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-12-13 21:46:09 -0500
committerPaul Mundt <lethal@linux-sh.org>2009-12-13 21:46:09 -0500
commit1232d88a47626cad13ba82f3a9ea814820bc1c65 (patch)
tree96a856dc78468ce8186e521f72124eaf4d1ed583 /arch/sh/kernel/traps_32.c
parentfcb4ebd678858850e8b029909064175cb627868d (diff)
sh: Make the unaligned trap handler always obey notification levels.
Presently there are a couple of paths in to the alignment handler, where only the address error path presently quiets the notificiation messages based on the configuration settings. We carry over the notification level tests to the default alignment handler itself incase so that they behave uniformly. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/traps_32.c')
-rw-r--r--arch/sh/kernel/traps_32.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c
index 3da5a125d884..86639beac3a2 100644
--- a/arch/sh/kernel/traps_32.c
+++ b/arch/sh/kernel/traps_32.c
@@ -452,12 +452,18 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
452 rm = regs->regs[index]; 452 rm = regs->regs[index];
453 453
454 /* shout about fixups */ 454 /* shout about fixups */
455 if (!expected && printk_ratelimit()) 455 if (!expected) {
456 printk(KERN_NOTICE "Fixing up unaligned %s access " 456 if (user_mode(regs) && (se_usermode & 1) && printk_ratelimit())
457 "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n", 457 pr_notice("Fixing up unaligned userspace access "
458 user_mode(regs) ? "userspace" : "kernel", 458 "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n",
459 current->comm, task_pid_nr(current), 459 current->comm, task_pid_nr(current),
460 (void *)regs->pc, instruction); 460 (void *)regs->pc, instruction);
461 else if (se_kernmode_warn && printk_ratelimit())
462 pr_notice("Fixing up unaligned kernel access "
463 "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n",
464 current->comm, task_pid_nr(current),
465 (void *)regs->pc, instruction);
466 }
461 467
462 ret = -EFAULT; 468 ret = -EFAULT;
463 switch (instruction&0xF000) { 469 switch (instruction&0xF000) {