All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Petr Mladek <pmladek@suse.cz>
Cc: Steven Rostedt <rostedt@goodmis.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Jiri Kosina <jkosina@suse.cz>,
	Seth Jennings <sjenning@redhat.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Vojtech Pavlik <vojtech@suse.cz>,
	Namhyung Kim <namhyung@kernel.org>,
	Miroslav Benes <mbenes@suse.cz>, Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH ftrace/core v6 4/5] kprobes: Set IPMODIFY flag only if the probe can change regs->ip
Date: Tue, 24 Feb 2015 16:38:18 +0900	[thread overview]
Message-ID: <54EC2A6A.2010007@hitachi.com> (raw)
In-Reply-To: <20150126161436.GC8244@dhcp128.suse.cz>

Hi Petr,

Sorry I missed this mail.

(2015/01/27 1:14), Petr Mladek wrote:> On Fri 2014-11-21 05:25:30, Masami Hiramatsu wrote:
>> Set FTRACE_OPS_FL_IPMODIFY flag only for the probes which can change
>> regs->ip, which has kprobe->break_handler.
>> Currently we can not put jprobe and another ftrace handler which
>> changes regs->ip on the same function because all kprobes have
>> FTRACE_OPS_FL_IPMODIFY flag. This removes FTRACE_OPS_FL_IPMODIFY
>> flag from kprobes and only when the user uses jprobe (or the
>> kprobe.break_handler != NULL) we add additinal ftrace_ops with
>> FTRACE_OPS_FL_IPMODIFY on target function.
>
> Please, what are the plans with this patch?

Well, I'll revise this for newer kernel.

>
> I have checked the interference between Kprobes and LivePatching and
> here is my observation:
>
> 1. Jprobe and LivePatch must be in a hard conflict. They both need
>    to change IP and continue another way after ftrace ops finishes.
>
>    BTW: I wonder a bit why Jprobe handler could not be called directly
>    from kprobe_ftrace_handler(). I guess that it is because we want
>    to call the kprobe handler in a sane context: preemption and IRQs
>    enabled, be able to use traced functions.

Right, Jprobe is just a different interface of kprobe handler. It must be
called from kprobes.
However, I think this is not so hard in practice, since we already have
perf-probe which allows us to find which register or stack is assigned to
which function parameter. That was the main reason why jprobe is introduced.
But now, we have perf-probe or systemtap, we don't(or less) need the hack like
jprobe anymore.


> 2. Normal Kprobe for the original function is ignored if the function
>    is patched.
>
>    I am working on a code that will print warning in both
>    cases. First, when we add a patch and the function has
>    a Kprobe registered. Second, the function is patched and
>    we want to add Kprobe for the original version.

Thanks! Maybe we can add "Ignored" flag for those kprobes so that users
can check it is working or not via debugfs.

>    I want to make it generic and make it dependent on the
>    IPMODIFY flag. IMHO, it just could be a handshake between
>    kprobe and ftrace code. I am still trying to understand
>    the needed parts of the code ;-)

BTW, the kprobes on function entry (iow, ftrace-based kprobes) should
not be ignored. Even if we patches a function-body, the entrance
address should be same.


> 3. Kretprobe could live with a patch without a problem!
>
>    The Kretprobe entry handler is called directly in
>    kprobe_ftrace_handler() and does not change IP.
>    On the other hand the LivePatch ftrace handler does
>    not modify the return address because the return address
>    is the same for the original and the patched function.

Right.

>
>    Or did I miss something?
>
>    This is where this patch might be useful. The other patches
>    from this patch set are already in Linus' tree and I cannot
>    find any information about this one.

Well, thank you for picking it up!


>
>    I could try to solve remaining problems if there are any.
>

Thank you,


-- 
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com


  reply	other threads:[~2015-02-24  7:38 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-21 10:25 [PATCH ftrace/core v6 0/5] ftrace, kprobes: Introduce IPMODIFY flag for ftrace_ops to detect conflicts Masami Hiramatsu
2014-11-21 10:25 ` [PATCH ftrace/core v6 1/5] kprobes/ftrace: Recover original IP if pre_handler doesn't change it Masami Hiramatsu
2014-11-21 10:25 ` [PATCH ftrace/core v6 2/5] ftrace, kprobes: Support IPMODIFY flag to find IP modify conflict Masami Hiramatsu
2014-11-21 18:05   ` Steven Rostedt
2014-11-21 19:43     ` Steven Rostedt
2014-11-24  2:12       ` Masami Hiramatsu
2014-11-24  2:06     ` Masami Hiramatsu
2014-11-21 10:25 ` [PATCH ftrace/core v6 3/5] kprobes: Add IPMODIFY flag to kprobe_ftrace_ops Masami Hiramatsu
2014-11-21 10:25 ` [PATCH ftrace/core v6 4/5] kprobes: Set IPMODIFY flag only if the probe can change regs->ip Masami Hiramatsu
2014-11-21 20:15   ` Steven Rostedt
2014-11-24  2:43     ` Masami Hiramatsu
2015-01-26 16:14   ` Petr Mladek
2015-02-24  7:38     ` Masami Hiramatsu [this message]
2015-02-24  8:52       ` Petr Mladek
2015-02-24 11:47         ` Masami Hiramatsu
2015-02-24 13:10           ` Petr Mladek
2014-11-21 10:25 ` [PATCH ftrace/core v6 5/5] kselftest, ftrace: Add ftrace IPMODIFY flag test Masami Hiramatsu
2014-11-21 21:03   ` Steven Rostedt
2014-11-24  2:50     ` Masami Hiramatsu
2014-11-24  4:29       ` Steven Rostedt
2014-11-24 14:11         ` Masami Hiramatsu
2014-11-24 15:07           ` Steven Rostedt
2014-11-24 15:18             ` Steven Rostedt
2014-11-24 15:19               ` Steven Rostedt
2014-11-25  1:51                 ` Masami Hiramatsu
2014-11-24 16:18           ` Shuah Khan
2014-11-25  1:23             ` Masami Hiramatsu
2014-11-25 14:42               ` Shuah Khan
2014-11-25 14:44                 ` Shuah Khan
2014-11-26  7:20                   ` Masami Hiramatsu
2014-11-26 18:40                     ` Shuah Khan
2014-11-27  4:56                       ` Masami Hiramatsu
2014-11-26 14:31           ` Steven Rostedt
2014-11-27  0:55             ` Masami Hiramatsu

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=54EC2A6A.2010007@hitachi.com \
    --to=masami.hiramatsu.pt@hitachi.com \
    --cc=ananth@in.ibm.com \
    --cc=jkosina@suse.cz \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mbenes@suse.cz \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=pmladek@suse.cz \
    --cc=rostedt@goodmis.org \
    --cc=sjenning@redhat.com \
    --cc=vojtech@suse.cz \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.