diff options
Diffstat (limited to 'arch/arm/mm/fault.c')
| -rw-r--r-- | arch/arm/mm/fault.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index b75eada23d0a..84becc911ee3 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -163,6 +163,11 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,  {  	struct siginfo si; +	if (addr > TASK_SIZE) +		harden_branch_predictor(); + +	clear_siginfo(&si); +  #ifdef CONFIG_DEBUG_USER  	if (((user_debug & UDBG_SEGV) && (sig == SIGSEGV)) ||  	    ((user_debug & UDBG_BUS)  && (sig == SIGBUS))) { @@ -557,6 +562,7 @@ do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)  		inf->name, fsr, addr);  	show_pte(current->mm, addr); +	clear_siginfo(&info);  	info.si_signo = inf->sig;  	info.si_errno = 0;  	info.si_code  = inf->code; @@ -589,6 +595,7 @@ do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs)  	pr_alert("Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n",  		inf->name, ifsr, addr); +	clear_siginfo(&info);  	info.si_signo = inf->sig;  	info.si_errno = 0;  	info.si_code  = inf->code;  |