aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnanth N Mavinakayanahalli <ananth@in.ibm.com>2005-06-08 18:50:00 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-08 19:21:13 -0400
commitf829fd23c87918374bac0d90404fe12f0e788d52 (patch)
tree2f1e238d0b16e2784eee46e62a5a09f94ffd406f
parent63224d1e8b4cf87cc7420201a8cb3b44b9bf0b40 (diff)
[PATCH] ppc64 kprobes: remove spurious MSR_SE masking
Remove spurious MSR_SE reset during kprobe processing. single_step_exception() already does it for us. Reset it to be safe when executing the fault_handler. Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/ppc64/kernel/kprobes.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/ppc64/kernel/kprobes.c b/arch/ppc64/kernel/kprobes.c
index 8f3317244311..e950a2058a19 100644
--- a/arch/ppc64/kernel/kprobes.c
+++ b/arch/ppc64/kernel/kprobes.c
@@ -177,8 +177,6 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs)
177 ret = emulate_step(regs, p->ainsn.insn[0]); 177 ret = emulate_step(regs, p->ainsn.insn[0]);
178 if (ret == 0) 178 if (ret == 0)
179 regs->nip = (unsigned long)p->addr + 4; 179 regs->nip = (unsigned long)p->addr + 4;
180
181 regs->msr &= ~MSR_SE;
182} 180}
183 181
184static inline int post_kprobe_handler(struct pt_regs *regs) 182static inline int post_kprobe_handler(struct pt_regs *regs)
@@ -215,6 +213,7 @@ static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr)
215 213
216 if (kprobe_status & KPROBE_HIT_SS) { 214 if (kprobe_status & KPROBE_HIT_SS) {
217 resume_execution(current_kprobe, regs); 215 resume_execution(current_kprobe, regs);
216 regs->msr &= ~MSR_SE;
218 regs->msr |= kprobe_saved_msr; 217 regs->msr |= kprobe_saved_msr;
219 218
220 unlock_kprobes(); 219 unlock_kprobes();