From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755965AbcHCEZE (ORCPT ); Wed, 3 Aug 2016 00:25:04 -0400 Received: from mail-qt0-f169.google.com ([209.85.216.169]:35650 "EHLO mail-qt0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751800AbcHCEY7 (ORCPT ); Wed, 3 Aug 2016 00:24:59 -0400 Date: Wed, 3 Aug 2016 09:54:54 +0530 From: Pratyush Anand To: Masami Hiramatsu Cc: linux-kernel@vger.kernel.org, oleg@redhat.com, srikar@linux.vnet.ibm.com, Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Peter Zijlstra Subject: Re: [PATCH] uprobe: Add uprobe_pre/post_sstep_notifier to NOKPROBE_SYMBOL Message-ID: <20160803042454.GB18785@localhost.localdomain> References: <66dfa2cb82fc306d42e51adf0f5d819b4695644e.1470120173.git.panand@redhat.com> <20160803004524.760a8398c7525852bf26a29d@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160803004524.760a8398c7525852bf26a29d@kernel.org> User-Agent: Mutt/1.6.1 (2016-04-27) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Masami, On 03/08/2016:12:45:24 AM, Masami Hiramatsu wrote: > On Tue, 2 Aug 2016 12:14:06 +0530 > Pratyush Anand wrote: > > > uprobe_pre_sstep_notifier and uprobe_post_sstep_notifier are called from > > debug exception handler, so blacklist them for kprobing. > > Actually, these exception notifers are kicked only if the debug exception > is not related to kprobes (at least on x86). In that case, we don't have > to take care about that. Or, would you hit any problem on it? Well, I have faced issue on ARM64. So, if I have a kprobe instrumented at these functions and then if I hit a uprobe then kernel goes into an infinite loop of "Unexpected kernel single-step exception at EL1". On x86 I have not tested, but I see that all functions except arch_uprobe_exception_notify() in the call stack of uprobe_pre/post_sstep_notifier() are blacklisted for kprobe. So, I am unable to understand that why arch_uprobe_exception_notify() and uprobe_pre/post_sstep_notifier() are not blacklisted. > > IOW, where do we have to prohibit kprobes are, the code path from where > right after the breakpoint (debug) exception is occurred, to where right > before the kprobe is handled. After that, it should be safe. Hummmm...My understanding was that if a function a() is not good to be kprobed then we can not kprobe any function called by a() as well. Thanks for the clarification. So, if I go with your definition then, something is still wrong on ARM64 which is causing issue when I kprobe uprobe_pre/post_sstep_notifier(). ~Pratyush > > Thank you, > > > > > > Signed-off-by: Pratyush Anand > > --- > > kernel/events/uprobes.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c > > index b7a525ab2083..206e594cb65e 100644 > > --- a/kernel/events/uprobes.c > > +++ b/kernel/events/uprobes.c > > @@ -37,6 +37,7 @@ > > #include > > #include > > #include > > +#include > > > > #include > > > > @@ -1997,6 +1998,7 @@ int uprobe_pre_sstep_notifier(struct pt_regs *regs) > > set_thread_flag(TIF_UPROBE); > > return 1; > > } > > +NOKPROBE_SYMBOL(uprobe_pre_sstep_notifier); > > > > /* > > * uprobe_post_sstep_notifier gets called in interrupt context as part of notifier > > @@ -2014,6 +2016,7 @@ int uprobe_post_sstep_notifier(struct pt_regs *regs) > > set_thread_flag(TIF_UPROBE); > > return 1; > > } > > +NOKPROBE_SYMBOL(uprobe_post_sstep_notifier); > > > > static struct notifier_block uprobe_exception_nb = { > > .notifier_call = arch_uprobe_exception_notify, > > -- > > 2.5.5 > > > > > -- > Masami Hiramatsu