This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[PATCH] Kprobes - fixup the pagefault exception caused by probehandlers
- From: Keshavamurthy Anil S <anil dot s dot keshavamurthy at intel dot com>
- To: Linux IA64 <linux-ia64 at vger dot kernel dot org>
- Cc: Linux Kernel <linux-kernel at vger dot kernel dot org>, Systemtap <systemtap at sources dot redhat dot com>
- Date: Thu, 14 Sep 2006 14:34:34 -0700
- Subject: [PATCH] Kprobes - fixup the pagefault exception caused by probehandlers
- Reply-to: Keshavamurthy Anil S <anil dot s dot keshavamurthy at intel dot com>
If the user-specified kprobe handler causes the page fault
when accessing user space address, fixup this fault since
do_page_fault() should not continue as the kprobe handler are
run with preemption disabled.
Please apply.
Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
---
arch/ia64/kernel/kprobes.c | 6 ++++++
1 file changed, 6 insertions(+)
Index: 2.6.18-rc6-git2/arch/ia64/kernel/kprobes.c
===================================================================
--- 2.6.18-rc6-git2.orig/arch/ia64/kernel/kprobes.c
+++ 2.6.18-rc6-git2/arch/ia64/kernel/kprobes.c
@@ -768,6 +768,12 @@ static int __kprobes kprobes_fault_handl
*/
if (cur->fault_handler && cur->fault_handler(cur, regs, trapnr))
return 1;
+ /*
+ * In case the user-specified fault handler returned
+ * zero, try to fix up.
+ */
+ if (ia64_done_with_exception(regs))
+ return 1;
/*
* In case the user-specified fault handler returned