From 9181e8c5cff3a6c62e6775e1b631bc7da47354bf Mon Sep 17 00:00:00 2001 From: Robin Getz Date: Wed, 21 Nov 2007 16:38:05 +0800 Subject: [PATCH] --- yaml --- r: 74143 b: refs/heads/master c: fb322915a05804a3a153f714f2f08e4c32ce84c7 h: refs/heads/master i: 74141: 83c37978a520ad773b95a8d722edf85c92a524c8 74139: 573867c39583bf2bcfa118e9e454ba0d5bff83cc 74135: 9d312d56b11871256767d63421256c37add5469c 74127: 5c727ab4edabdd89dd0e126f852fc4de7d5c3c02 74111: d7e1dacc9d300fcff97010779846347556f68de5 v: v3 --- [refs] | 2 +- trunk/arch/blackfin/kernel/traps.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 059d67929f16..fb4cb9878c54 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 569a50ca3f56cd69199733580e7ca0e81029473a +refs/heads/master: fb322915a05804a3a153f714f2f08e4c32ce84c7 diff --git a/trunk/arch/blackfin/kernel/traps.c b/trunk/arch/blackfin/kernel/traps.c index d88098c58bfa..910cdd43fe60 100644 --- a/trunk/arch/blackfin/kernel/traps.c +++ b/trunk/arch/blackfin/kernel/traps.c @@ -463,18 +463,20 @@ asmlinkage void trap_c(struct pt_regs *fp) #endif panic("Kernel exception"); } - - /* Ensure that bad return addresses don't end up in an infinite - * loop, due to speculative loads/reads - */ - if (trapnr == VEC_CPLB_I_M) - fp->pc = SAFE_USER_INSTRUCTION; } + info.si_signo = sig; info.si_errno = 0; info.si_addr = (void *)fp->pc; force_sig_info(sig, &info, current); + /* Ensure that bad return addresses don't end up in an infinite + * loop, due to speculative loads/reads. This needs to be done after + * the signal has been sent. + */ + if (trapnr == VEC_CPLB_I_M && sig != SIGTRAP) + fp->pc = SAFE_USER_INSTRUCTION; + trace_buffer_restore(j); return; }