diff options
Diffstat (limited to 'arch/arm/mm/fault.c')
-rw-r--r-- | arch/arm/mm/fault.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index b75eada23d0a..32034543f49c 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
@@ -163,6 +163,8 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr, | |||
163 | { | 163 | { |
164 | struct siginfo si; | 164 | struct siginfo si; |
165 | 165 | ||
166 | clear_siginfo(&si); | ||
167 | |||
166 | #ifdef CONFIG_DEBUG_USER | 168 | #ifdef CONFIG_DEBUG_USER |
167 | if (((user_debug & UDBG_SEGV) && (sig == SIGSEGV)) || | 169 | if (((user_debug & UDBG_SEGV) && (sig == SIGSEGV)) || |
168 | ((user_debug & UDBG_BUS) && (sig == SIGBUS))) { | 170 | ((user_debug & UDBG_BUS) && (sig == SIGBUS))) { |
@@ -557,6 +559,7 @@ do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
557 | inf->name, fsr, addr); | 559 | inf->name, fsr, addr); |
558 | show_pte(current->mm, addr); | 560 | show_pte(current->mm, addr); |
559 | 561 | ||
562 | clear_siginfo(&info); | ||
560 | info.si_signo = inf->sig; | 563 | info.si_signo = inf->sig; |
561 | info.si_errno = 0; | 564 | info.si_errno = 0; |
562 | info.si_code = inf->code; | 565 | info.si_code = inf->code; |
@@ -589,6 +592,7 @@ do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs) | |||
589 | pr_alert("Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n", | 592 | pr_alert("Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n", |
590 | inf->name, ifsr, addr); | 593 | inf->name, ifsr, addr); |
591 | 594 | ||
595 | clear_siginfo(&info); | ||
592 | info.si_signo = inf->sig; | 596 | info.si_signo = inf->sig; |
593 | info.si_errno = 0; | 597 | info.si_errno = 0; |
594 | info.si_code = inf->code; | 598 | info.si_code = inf->code; |