Messages in this thread Patch in this message | | | Date | Thu, 05 Feb 2009 17:12:39 -0500 | From | Masami Hiramatsu <> | Subject | [BUGFIX][PATCH -rc/-mm] prevent kprobes from catching spurious page faults |
| |
Prevent kprobes from catching spurious faults which will cause infinite recursive page-fault and memory corruption by stack overflow.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> --- This patch solves memory corruption bug which I reported last week. http://lkml.org/lkml/2009/1/27/428 Since 2.6.28 kernel also has same bug, I think it should be applied to 2.6.28.y too.
Thanks,
arch/x86/mm/fault.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
Index: linux-2.6/arch/x86/mm/fault.c =================================================================== --- linux-2.6.orig/arch/x86/mm/fault.c +++ linux-2.6/arch/x86/mm/fault.c @@ -603,8 +603,6 @@ void __kprobes do_page_fault(struct pt_r
si_code = SEGV_MAPERR;
- if (notify_page_fault(regs)) - return; if (unlikely(kmmio_fault(regs, address))) return;
@@ -634,6 +632,9 @@ void __kprobes do_page_fault(struct pt_r if (spurious_fault(address, error_code)) return;
+ /* kprobes don't want to hook the spurious faults. */ + if (notify_page_fault(regs)) + return; /* * Don't take the mm semaphore here. If we fixup a prefetch * fault we could otherwise deadlock. @@ -641,6 +642,9 @@ void __kprobes do_page_fault(struct pt_r goto bad_area_nosemaphore; }
+ /* kprobes don't want to hook the spurious faults. */ + if (notify_page_fault(regs)) + return;
/* * It's safe to allow irq's after cr2 has been saved and the -- Masami Hiramatsu
Software Engineer Hitachi Computer Products (America) Inc. Software Solutions Division
e-mail: mhiramat@redhat.com
| |