mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
To: Masami Hiramatsu <mhiramat@kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Alexei Starovoitov <ast@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>, Josef Bacik <jbacik@fb.com>,
	James Hogan <jhogan@kernel.org>,
	Laura Abbott <labbott@redhat.com>,
	Russell King <linux@armlinux.org.uk>,
	linux-kernel@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
	Ralf Baechle <ralf@linux-mips.org>,
	Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Tony Luck <tony.luck@intel.com>,
	Vineet Gupta <vgupta@synopsys.com>,
	Will Deacon <will.deacon@arm.com>,
	x86@kernel.org
Subject: Re: [PATCH -tip v4 24/27] bpf: error-inject: kprobes: Clear current_kprobe and enable preempt in kprobe
Date: Thu, 31 May 2018 16:25:38 +0530	[thread overview]
Message-ID: <1527763450.f65xiu4yuz.naveen@linux.ibm.com> (raw)
In-Reply-To: <152749149794.15132.15817377604536829521.stgit@devbox>

Masami Hiramatsu wrote:
> Clear current_kprobe and enable preemption in kprobe
> even if pre_handler returns !0.
> 
> This simplifies function override using kprobes.
> 
> Jprobe used to require to keep the preemption disabled and
> keep current_kprobe until it returned to original function
> entry. For this reason kprobe_int3_handler() and similar
> arch dependent kprobe handers checks pre_handler result
> and exit without enabling preemption if the result is !0.
> 
> After removing the jprobe, Kprobes does not need to
> keep preempt disabled even if user handler returns !0
> anymore.

I think the reason jprobes did it that way is to address architecture 
specific requirements when changing a function. So, without that 
infrastructure, I am not sure if we will be able to claim support for 
over-riding functions with kprobes. I am not sure if we want to claim 
that, but this is something we need to be clear on.

For powerpc, the current function override in error-inject works fine 
since the new function does nothing. But, if anyone wants to do more 
work in the replacement function, it won't work with the current 
approach.

> 
> But since the function override handler in error-inject
> and bpf is also returns !0 if it overrides a function,
> to balancing the preempt count, it enables preemption
> and reset current kprobe by itself.
> 
> That is a bad design that is very buggy. This fixes
> such unbalanced preempt-count and current_kprobes setting
> in kprobes, bpf and error-inject.
> 
> Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> ---
>  arch/arc/kernel/kprobes.c          |    5 +++--
>  arch/arm/probes/kprobes/core.c     |   10 +++++-----
>  arch/arm64/kernel/probes/kprobes.c |   10 +++++-----
>  arch/ia64/kernel/kprobes.c         |   13 ++++---------
>  arch/mips/kernel/kprobes.c         |    4 ++--
>  arch/powerpc/kernel/kprobes.c      |    7 +++++--

I think you should also update arch/powerpc/kernel/kprobes-ftrace.c

- Naveen

  reply	other threads:[~2018-05-31 10:55 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-28  6:59 [PATCH -tip v4 00/27] kprobes: Cleanup jprobe implementation Masami Hiramatsu
2018-05-28  6:59 ` [PATCH -tip v4 01/27] Documentation/kprobes: Fix to remove remaining jprobe Masami Hiramatsu
2018-05-28  7:00 ` [PATCH -tip v4 02/27] kprobes: Remove jprobe API implementation Masami Hiramatsu
2018-05-28  7:00 ` [PATCH -tip v4 03/27] kprobes/x86: Remove jprobe implementation Masami Hiramatsu
2018-05-28  7:01 ` [PATCH -tip v4 04/27] ARC: kprobes: " Masami Hiramatsu
2018-05-28  7:01 ` [PATCH -tip v4 05/27] ARM: kprobes: Remove jprobe arm implementation Masami Hiramatsu
2018-05-28  7:02 ` [PATCH -tip v4 06/27] arm64: kprobes: Remove jprobe implementation Masami Hiramatsu
2018-05-28  7:02 ` [PATCH -tip v4 07/27] powerpc/kprobes: Remove jprobe powerpc implementation Masami Hiramatsu
2018-05-28  7:03 ` [PATCH -tip v4 08/27] ia64: kprobes: Remove jprobe implementation Masami Hiramatsu
2018-05-28  7:03 ` [PATCH -tip v4 09/27] MIPS: " Masami Hiramatsu
2018-05-28  7:04 ` [PATCH -tip v4 10/27] s390/kprobes: " Masami Hiramatsu
2018-05-28  7:04 ` [PATCH -tip v4 11/27] sh: kprobes: " Masami Hiramatsu
2018-05-28  7:05 ` [PATCH -tip v4 12/27] sparc64: " Masami Hiramatsu
2018-05-28  7:05 ` [PATCH -tip v4 13/27] kprobes: Don't check the ->break_handler() in generic kprobes code Masami Hiramatsu
2018-05-28  7:06 ` [PATCH -tip v4 14/27] kprobes/x86: Don't call ->break_handler() in x86 kprobes Masami Hiramatsu
2018-05-28  7:06 ` [PATCH -tip v4 15/27] ARC: kprobes: Don't call the ->break_handler() in ARC kprobes code Masami Hiramatsu
2018-05-28  7:07 ` [PATCH -tip v4 16/27] ARM: kprobes: Don't call the ->break_handler() in arm " Masami Hiramatsu
2018-05-28  7:08 ` [PATCH -tip v4 17/27] arm64: " Masami Hiramatsu
2018-05-28  7:08 ` [PATCH -tip v4 18/27] powerpc/kprobes: " Masami Hiramatsu
2018-05-28  7:09 ` [PATCH -tip v4 19/27] ia64: kprobes: Don't call the ->break_handler() in ia64 " Masami Hiramatsu
2018-05-28  7:09 ` [PATCH -tip v4 20/27] MIPS: kprobes: Don't call the ->break_handler() in MIPS " Masami Hiramatsu
2018-05-28  7:10 ` [PATCH -tip v4 21/27] s390/kprobes: Don't call the ->break_handler() in s390 " Masami Hiramatsu
2018-05-28  7:10 ` [PATCH -tip v4 22/27] sh: kprobes: Don't call the ->break_handler() in SH " Masami Hiramatsu
2018-05-28  7:11 ` [PATCH -tip v4 23/27] sparc64: kprobes: Don't call the ->break_handler() in sparc64 " Masami Hiramatsu
2018-05-28  7:11 ` [PATCH -tip v4 24/27] bpf: error-inject: kprobes: Clear current_kprobe and enable preempt in kprobe Masami Hiramatsu
2018-05-31 10:55   ` Naveen N. Rao [this message]
2018-06-01 23:36     ` Masami Hiramatsu
2018-06-02 11:58       ` Naveen N. Rao
2018-06-04  9:08         ` Masami Hiramatsu
2018-05-28  7:12 ` [PATCH -tip v4 25/27] x86: kprobes: Do not disable preempt on int3 path Masami Hiramatsu
2018-05-28  7:12 ` [PATCH -tip v4 26/27] Documentation: kprobes: Add how to change the execution path Masami Hiramatsu
2018-05-28  7:13 ` [PATCH -tip v4 27/27] kprobes: Remove jprobe stub API Masami Hiramatsu
2018-05-30  9:01 ` [PATCH -tip v4 00/27] kprobes: Cleanup jprobe implementation Masami Hiramatsu
2018-05-31 10:43   ` Naveen N. Rao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1527763450.f65xiu4yuz.naveen@linux.ibm.com \
    --to=naveen.n.rao@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=ananth@linux.vnet.ibm.com \
    --cc=arnd@arndb.de \
    --cc=ast@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=fenghua.yu@intel.com \
    --cc=hpa@zytor.com \
    --cc=jbacik@fb.com \
    --cc=jhogan@kernel.org \
    --cc=labbott@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=ralf@linux-mips.org \
    --cc=ravi.bangoria@linux.vnet.ibm.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=vgupta@synopsys.com \
    --cc=will.deacon@arm.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome