sh: ratelimit unaligned fixups
authorAndre Draszik <andre.draszik@st.com>
Mon, 24 Aug 2009 05:38:27 +0000 (14:38 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 24 Aug 2009 05:38:27 +0000 (14:38 +0900)
This patch makes sure we see messages about unaligned access fixups
every now and then. Else especially userspace apps suffering from
bad programming won't ever be noticed...

Signed-off by: Andre Draszik <andre.draszik@st.com>
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/kernel/traps_32.c

index 05a04b6..866c7c7 100644 (file)
@@ -359,13 +359,6 @@ static inline int handle_delayslot(struct pt_regs *regs,
 #define SH_PC_8BIT_OFFSET(instr) ((((signed char)(instr))*2) + 4)
 #define SH_PC_12BIT_OFFSET(instr) ((((signed short)(instr<<4))>>3) + 4)
 
-/*
- * XXX: SH-2A needs this too, but it needs an overhaul thanks to mixed 32-bit
- * opcodes..
- */
-
-static int handle_unaligned_notify_count = 10;
-
 int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
                            struct mem_access *ma)
 {
@@ -375,15 +368,13 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
        index = (instruction>>8)&15;    /* 0x0F00 */
        rm = regs->regs[index];
 
-       /* shout about the first ten userspace fixups */
-       if (user_mode(regs) && handle_unaligned_notify_count>0) {
-               handle_unaligned_notify_count--;
-
-               printk(KERN_NOTICE "Fixing up unaligned userspace access "
+       /* shout about fixups */
+       if (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);
-       }
 
        ret = -EFAULT;
        switch (instruction&0xF000) {