From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anshuman Khandual Date: Tue, 04 Jun 2019 08:24:10 +0000 Subject: Re: [RFC V2] mm: Generalize notify_page_fault() Message-Id: List-Id: References: <1559630046-12940-1-git-send-email-anshuman.khandual@arm.com> <20190604065401.GE3402@hirez.programming.kicks-ass.net> In-Reply-To: <20190604065401.GE3402@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Peter Zijlstra Cc: Mark Rutland , Michal Hocko , linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org, Catalin Marinas , Dave Hansen , Will Deacon , linux-mm@kvack.org, Paul Mackerras , sparclinux@vger.kernel.org, linux-s390@vger.kernel.org, Yoshinori Sato , Michael Ellerman , x86@kernel.org, Russell King , Matthew Wilcox , Ingo Molnar , Fenghua Yu , Stephen Rothwell , Andrey Konovalov , Andy Lutomirski , Thomas Gleixner , linux-arm-kernel@lists.infradead.org, Christophe Leroy , Tony Luck , Heiko Carstens , linux-kernel@vger.kernel.org, Martin Schwidefsky , Andrew Morton , linuxppc-dev@lists.ozlabs.org, "David S. Miller" 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 >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -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.