[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <1185510650278-git-send-email-vignatti@c3sl.ufpr.br>
Date: Fri, 27 Jul 2007 01:30:50 -0300
From: Tiago Vignatti <vignatti@...l.ufpr.br>
To: linux-kernel@...r.kernel.org
Cc: Tiago Vignatti <vignatti@...l.ufpr.br>
Subject: [PATCH] Exports address to the page fault notifier.
Signed-off-by: Tiago Vignatti <vignatti@...l.ufpr.br>
---
arch/i386/mm/fault.c | 9 +++++----
include/linux/kdebug.h | 1 +
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c
index 01ffdd4..c405802 100644
--- a/arch/i386/mm/fault.c
+++ b/arch/i386/mm/fault.c
@@ -47,14 +47,15 @@ int unregister_page_fault_notifier(struct notifier_block *nb)
}
EXPORT_SYMBOL_GPL(unregister_page_fault_notifier);
-static inline int notify_page_fault(struct pt_regs *regs, long err)
+static inline int notify_page_fault(struct pt_regs *regs, long err, unsigned long address)
{
struct die_args args = {
.regs = regs,
.str = "page fault",
.err = err,
.trapnr = 14,
- .signr = SIGSEGV
+ .signr = SIGSEGV,
+ .address = address
};
return atomic_notifier_call_chain(¬ify_page_fault_chain,
DIE_PAGE_FAULT, &args);
@@ -330,7 +331,7 @@ fastcall void __kprobes do_page_fault(struct pt_regs *regs,
if (unlikely(address >= TASK_SIZE)) {
if (!(error_code & 0x0000000d) && vmalloc_fault(address) >= 0)
return;
- if (notify_page_fault(regs, error_code) == NOTIFY_STOP)
+ if (notify_page_fault(regs, error_code, address) == NOTIFY_STOP)
return;
/*
* Don't take the mm semaphore here. If we fixup a prefetch
@@ -339,7 +340,7 @@ fastcall void __kprobes do_page_fault(struct pt_regs *regs,
goto bad_area_nosemaphore;
}
- if (notify_page_fault(regs, error_code) == NOTIFY_STOP)
+ if (notify_page_fault(regs, error_code, address) == NOTIFY_STOP)
return;
/* It's safe to allow irq's after cr2 has been saved and the vmalloc
diff --git a/include/linux/kdebug.h b/include/linux/kdebug.h
index 5db38d6..e8005c2 100644
--- a/include/linux/kdebug.h
+++ b/include/linux/kdebug.h
@@ -9,6 +9,7 @@ struct die_args {
long err;
int trapnr;
int signr;
+ unsigned long address;
};
int register_die_notifier(struct notifier_block *nb);
--
1.5.2.4
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists