sh: Make the unaligned trap handler always obey notification levels.
authorPaul Mundt <lethal@linux-sh.org>
Mon, 14 Dec 2009 02:46:09 +0000 (11:46 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 14 Dec 2009 02:46:09 +0000 (11:46 +0900)
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>
arch/sh/kernel/traps_32.c

index 3da5a125d884cb9079170fb424aa5d5b3ce8adb4..86639beac3a2d1d7b32e44e4ded50e1e1329bfdb 100644 (file)
@@ -452,12 +452,18 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
        rm = regs->regs[index];
 
        /* shout about fixups */
-       if (!expected && printk_ratelimit())
-               printk(KERN_NOTICE "Fixing up unaligned %s access "
-                      "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n",
-                      user_mode(regs) ? "userspace" : "kernel",
-                      current->comm, task_pid_nr(current),
-                      (void *)regs->pc, instruction);
+       if (!expected) {
+               if (user_mode(regs) && (se_usermode & 1) && printk_ratelimit())
+                       pr_notice("Fixing up unaligned userspace access "
+                                 "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n",
+                                 current->comm, task_pid_nr(current),
+                                 (void *)regs->pc, instruction);
+               else if (se_kernmode_warn && printk_ratelimit())
+                       pr_notice("Fixing up unaligned kernel access "
+                                 "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n",
+                                 current->comm, task_pid_nr(current),
+                                 (void *)regs->pc, instruction);
+       }
 
        ret = -EFAULT;
        switch (instruction&0xF000) {