aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/traps.c')
-rw-r--r--arch/arm/kernel/traps.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index 5e3633c24e63..2584f9066da3 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -439,6 +439,7 @@ asmlinkage void do_undefinstr(struct pt_regs *regs)
439 siginfo_t info; 439 siginfo_t info;
440 void __user *pc; 440 void __user *pc;
441 441
442 clear_siginfo(&info);
442 pc = (void __user *)instruction_pointer(regs); 443 pc = (void __user *)instruction_pointer(regs);
443 444
444 if (processor_mode(regs) == SVC_MODE) { 445 if (processor_mode(regs) == SVC_MODE) {
@@ -537,6 +538,7 @@ static int bad_syscall(int n, struct pt_regs *regs)
537{ 538{
538 siginfo_t info; 539 siginfo_t info;
539 540
541 clear_siginfo(&info);
540 if ((current->personality & PER_MASK) != PER_LINUX) { 542 if ((current->personality & PER_MASK) != PER_LINUX) {
541 send_sig(SIGSEGV, current, 1); 543 send_sig(SIGSEGV, current, 1);
542 return regs->ARM_r0; 544 return regs->ARM_r0;
@@ -604,6 +606,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
604{ 606{
605 siginfo_t info; 607 siginfo_t info;
606 608
609 clear_siginfo(&info);
607 if ((no >> 16) != (__ARM_NR_BASE>> 16)) 610 if ((no >> 16) != (__ARM_NR_BASE>> 16))
608 return bad_syscall(no, regs); 611 return bad_syscall(no, regs);
609 612
@@ -740,6 +743,8 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
740 unsigned long addr = instruction_pointer(regs); 743 unsigned long addr = instruction_pointer(regs);
741 siginfo_t info; 744 siginfo_t info;
742 745
746 clear_siginfo(&info);
747
743#ifdef CONFIG_DEBUG_USER 748#ifdef CONFIG_DEBUG_USER
744 if (user_debug & UDBG_BADABORT) { 749 if (user_debug & UDBG_BADABORT) {
745 pr_err("[%d] %s: bad data abort: code %d instr 0x%08lx\n", 750 pr_err("[%d] %s: bad data abort: code %d instr 0x%08lx\n",