diff options
Diffstat (limited to 'arch/alpha/kernel/traps.c')
| -rw-r--r-- | arch/alpha/kernel/traps.c | 10 | 
1 files changed, 3 insertions, 7 deletions
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index 6ee7655b756..b14f015008a 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c @@ -17,6 +17,7 @@  #include <linux/module.h>  #include <linux/init.h>  #include <linux/kallsyms.h> +#include <linux/ratelimit.h>  #include <asm/gentrap.h>  #include <asm/uaccess.h> @@ -771,8 +772,7 @@ asmlinkage void  do_entUnaUser(void __user * va, unsigned long opcode,  	      unsigned long reg, struct pt_regs *regs)  { -	static int cnt = 0; -	static unsigned long last_time; +	static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);  	unsigned long tmp1, tmp2, tmp3, tmp4;  	unsigned long fake_reg, *reg_addr = &fake_reg; @@ -783,15 +783,11 @@ do_entUnaUser(void __user * va, unsigned long opcode,  	   with the unaliged access.  */  	if (!test_thread_flag (TIF_UAC_NOPRINT)) { -		if (cnt >= 5 && time_after(jiffies, last_time + 5 * HZ)) { -			cnt = 0; -		} -		if (++cnt < 5) { +		if (__ratelimit(&ratelimit)) {  			printk("%s(%d): unaligned trap at %016lx: %p %lx %ld\n",  			       current->comm, task_pid_nr(current),  			       regs->pc - 4, va, opcode, reg);  		} -		last_time = jiffies;  	}  	if (test_thread_flag (TIF_UAC_SIGBUS))  		goto give_sigbus;  |