From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Frederic Weisbecker <fweisbec@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
yrl.pp-manager.tt@hitachi.com
Subject: Re: [BUG] kprobes crashing because of preempt count
Date: Fri, 01 Jul 2011 11:23:27 +0900 [thread overview]
Message-ID: <4E0D2F9F.9040102@hitachi.com> (raw)
In-Reply-To: <1309484007.26417.121.camel@gandalf.stny.rr.com>
(2011/07/01 10:33), Steven Rostedt wrote:
> On Fri, 2011-07-01 at 10:12 +0900, Masami Hiramatsu wrote:
>
>>> Do we really need to have preemption disabled throughout this? Is it
>>> because we don't want to migrate or call schedule? Not sure what the
>>> best way to fix this is. Perhaps we add a kprobe_preempt_disable() that
>>> is checked as well?
>>
>> I think the best way to do that is just removing preemption disabling
>> code, because
>> - breakpoint exception itself disables interrupt (at least on x86)
>> - While single stepping, interrupts also be disabled.
>
> I guess the above point is critical. If interrupts are disabled through
> out the entire walk through, then we are fine, as that just guarantees
> preemption is disabled anyway. But! if it does get enabled anywhere,
> then we will have issues as the two traps require using the same state
> data that is stored per cpu.
That should be a bug, or kprobe's assumption was so fragile (and must
be rewritten.)
Anyway, kprobe_handler() in arch/x86/kernel/kprobes.c expects that
it is executed in a critical section, and it ensures that if there
is no other kprobes running on that processor. (however, as you can
see in reenter_kprobe(), if the breakpoint hits under single stepping,
it calls BUG() because kprobes guess that someone put another kprobe
inside kprobe's critical section)
>> (BTW, theoretically, boosted and optimized kprobes shouldn't have
>> this problem, because those doesn't execute single-stepping)
>
> Does the optimized kprobes even disable preemption?
Yeah, just while calling its handler, since someone will
call may_sleep() in it... Anyway, nowadays it disables
interruption for emulating breakpoint behavior.
>>
>> So, I think there is no reason of disabling preemption.
>
> That would be the best solution.
Thank you,
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
next prev parent reply other threads:[~2011-07-01 2:23 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-30 13:23 [BUG] kprobes crashing because of preempt count Steven Rostedt
2011-06-30 15:51 ` [RFC][PATCH] kprobes: Add separate preempt_disabling for kprobes Steven Rostedt
2011-06-30 16:14 ` Frederic Weisbecker
2011-06-30 16:46 ` Steven Rostedt
2011-06-30 19:40 ` Jason Baron
2011-06-30 19:42 ` Steven Rostedt
2011-06-30 21:56 ` Peter Zijlstra
2011-07-01 1:22 ` Masami Hiramatsu
2011-07-01 1:38 ` Steven Rostedt
2011-07-01 1:52 ` Masami Hiramatsu
2011-07-01 5:09 ` Masami Hiramatsu
2011-07-01 11:13 ` Masami Hiramatsu
2011-07-01 12:54 ` Steven Rostedt
2011-07-01 12:19 ` Steven Rostedt
2011-07-01 13:15 ` Masami Hiramatsu
2011-07-01 13:14 ` [RFC PATCH -tip ] [BUGFIX] x86: Remove preempt disabling from kprobes Masami Hiramatsu
2011-07-01 13:43 ` Steven Rostedt
2011-07-01 13:53 ` Steven Rostedt
2011-07-03 2:05 ` Masami Hiramatsu
2011-07-02 6:09 ` Ananth N Mavinakayanahalli
2011-07-01 1:12 ` [BUG] kprobes crashing because of preempt count Masami Hiramatsu
2011-07-01 1:33 ` Steven Rostedt
2011-07-01 2:23 ` Masami Hiramatsu [this message]
2011-07-01 11:36 ` Ananth N Mavinakayanahalli
2011-07-01 12:01 ` Masami Hiramatsu
2011-07-01 13:03 ` Ananth N Mavinakayanahalli
2011-07-01 13:19 ` Steven Rostedt
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=4E0D2F9F.9040102@hitachi.com \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=a.p.zijlstra@chello.nl \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=yrl.pp-manager.tt@hitachi.com \
/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.