On 06/04/2019 12:24 PM, Peter Zijlstra wrote: > On Tue, Jun 04, 2019 at 12:04:06PM +0530, Anshuman Khandual wrote: >> diff --git a/mm/memory.c b/mm/memory.c >> index ddf20bd..b6bae8f 100644 >> --- a/mm/memory.c >> +++ b/mm/memory.c >> @@ -52,6 +52,7 @@ >> #include <linux/pagemap.h> >> #include <linux/memremap.h> >> #include <linux/ksm.h> >> +#include <linux/kprobes.h> >> #include <linux/rmap.h> >> #include <linux/export.h> >> #include <linux/delayacct.h> >> @@ -141,6 +142,21 @@ static int __init init_zero_pfn(void) >> core_initcall(init_zero_pfn); >> >> >> +int __kprobes notify_page_fault(struct pt_regs *regs, unsigned int trap) >> +{ >> + int ret = 0; >> + >> + /* >> + * To be potentially processing a kprobe fault and to be allowed >> + * to call kprobe_running(), we have to be non-preemptible. >> + */ >> + if (kprobes_built_in() && !preemptible() && !user_mode(regs)) { >> + if (kprobe_running() && kprobe_fault_handler(regs, trap)) >> + ret = 1; >> + } >> + return ret; >> +} > > That thing should be called kprobe_page_fault() or something, > notify_page_fault() is a horribly crap name for this function. Agreed. kprobe_page_fault() sounds good.