Skip to content

Commit

Permalink
Blackfin: fix trap_c() exit paths
Browse files Browse the repository at this point in the history
The trap_c() code pushes the hardware trace status onto the stack, but
doesn't always restore it when returning from some trap code paths.  So
unify the exit code paths to all head to the end of the function.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
  • Loading branch information
Mike Frysinger committed Jun 13, 2009
1 parent 47e9ded commit 6510a20
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions arch/blackfin/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
CHK_DEBUGGER_TRAP_MAYBE();
/* Check if this is a breakpoint in kernel space */
if (fp->ipend & 0xffc0)
return;
goto traps_done;
else
break;
/* 0x03 - User Defined, userspace stack overflow */
Expand All @@ -325,7 +325,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
info.si_code = TRAP_ILLTRAP;
sig = SIGTRAP;
CHK_DEBUGGER_TRAP();
return;
goto traps_done;
#endif
/* 0x04 - User Defined */
/* 0x05 - User Defined */
Expand Down Expand Up @@ -355,7 +355,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
CHK_DEBUGGER_TRAP_MAYBE();
/* Check if this is a single step in kernel space */
if (fp->ipend & 0xffc0)
return;
goto traps_done;
else
break;
/* 0x11 - Trace Buffer Full, handled here */
Expand Down Expand Up @@ -459,7 +459,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
CHK_DEBUGGER_TRAP_MAYBE();
/* Check if this is a watchpoint in kernel space */
if (fp->ipend & 0xffc0)
return;
goto traps_done;
else
break;
#ifdef CONFIG_BF535
Expand Down Expand Up @@ -624,8 +624,8 @@ asmlinkage void trap_c(struct pt_regs *fp)
if (ANOMALY_05000461 && trapnr == VEC_HWERR && !access_ok(VERIFY_READ, fp->pc, 8))
fp->pc = SAFE_USER_INSTRUCTION;

traps_done:
trace_buffer_restore(j);
return;
}

/* Typical exception handling routines */
Expand Down

0 comments on commit 6510a20

Please sign in to comment.