From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
Andi Kleen <ak@linux.intel.com>, Andi Kleen <andi@firstfloor.org>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Sandeepa Prabhu <sandeepa.prabhu@linaro.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
x86@kernel.org, fche@redhat.com, mingo@redhat.com,
systemtap@sourceware.org, "H. Peter Anvin" <hpa@zytor.com>,
Sasha Levin <sasha.levin@oracle.com>,
Thomas Gleixner <tglx@linutronix.de>,
Seiji Aguchi <seiji.aguchi@hds.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH -tip v8 08/26] kprobes/x86: Call exception handlers directly from do_int3/do_debug
Date: Mon, 24 Mar 2014 17:47:06 +0900 [thread overview]
Message-ID: <532FF10A.8010502@hitachi.com> (raw)
In-Reply-To: <20140321210508.358c30ee@gandalf.local.home>
(2014/03/22 10:05), Steven Rostedt wrote:
> On Wed, 05 Mar 2014 20:59:39 +0900
> Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> wrote:
>
>> To avoid a kernel crash by probing on lockdep code, call
>> kprobe_int3_handler and kprobe_debug_handler directly
>> from do_int3 and do_debug. Since there is a locking code
>> in notify_die, lockdep code can be invoked. And because
>> the lockdep involves printk() related things, theoretically,
>> we need to prohibit probing on much more code...
>>
>> Anyway, most of the int3 handlers in the kernel are already
>> called from do_int3 directly, e.g. ftrace_int3_handler,
>> poke_int3_handler, kgdb_ll_trap. Actually only
>> kprobe_exceptions_notify is on the notifier_call_chain.
>>
>> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
>> Cc: Thomas Gleixner <tglx@linutronix.de>
>> Cc: Ingo Molnar <mingo@redhat.com>
>> Cc: "H. Peter Anvin" <hpa@zytor.com>
>> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
>> Cc: Andi Kleen <ak@linux.intel.com>
>> Cc: Steven Rostedt <rostedt@goodmis.org>
>> Cc: Sasha Levin <sasha.levin@oracle.com>
>> Cc: Andrew Morton <akpm@linux-foundation.org>
>> Cc: Seiji Aguchi <seiji.aguchi@hds.com>
>> Cc: Frederic Weisbecker <fweisbec@gmail.com>
>> ---
>> arch/x86/include/asm/kprobes.h | 2 ++
>> arch/x86/kernel/kprobes/core.c | 24 +++---------------------
>> arch/x86/kernel/traps.c | 10 ++++++++++
>> 3 files changed, 15 insertions(+), 21 deletions(-)
>>
>> diff --git a/arch/x86/include/asm/kprobes.h b/arch/x86/include/asm/kprobes.h
>> index 9454c16..53cdfb2 100644
>> --- a/arch/x86/include/asm/kprobes.h
>> +++ b/arch/x86/include/asm/kprobes.h
>> @@ -116,4 +116,6 @@ struct kprobe_ctlblk {
>> extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
>> extern int kprobe_exceptions_notify(struct notifier_block *self,
>> unsigned long val, void *data);
>> +extern int kprobe_int3_handler(struct pt_regs *regs);
>> +extern int kprobe_debug_handler(struct pt_regs *regs);
>> #endif /* _ASM_X86_KPROBES_H */
>> diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
>> index 4708d6e..566958e 100644
>> --- a/arch/x86/kernel/kprobes/core.c
>> +++ b/arch/x86/kernel/kprobes/core.c
>> @@ -559,7 +559,7 @@ reenter_kprobe(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb
>> * Interrupts are disabled on entry as trap3 is an interrupt gate and they
>> * remain disabled throughout this function.
>> */
>> -static int __kprobes kprobe_handler(struct pt_regs *regs)
>> +int __kprobes kprobe_int3_handler(struct pt_regs *regs)
>> {
>> kprobe_opcode_t *addr;
>> struct kprobe *p;
>> @@ -857,7 +857,7 @@ no_change:
>> * Interrupts are disabled on entry as trap1 is an interrupt gate and they
>> * remain disabled throughout this function.
>> */
>> -static int __kprobes post_kprobe_handler(struct pt_regs *regs)
>> +int __kprobes kprobe_debug_handler(struct pt_regs *regs)
>> {
>> struct kprobe *cur = kprobe_running();
>> struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
>> @@ -960,22 +960,7 @@ kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *d
>> if (args->regs && user_mode_vm(args->regs))
>> return ret;
>>
>> - switch (val) {
>> - case DIE_INT3:
>> - if (kprobe_handler(args->regs))
>> - ret = NOTIFY_STOP;
>> - break;
>> - case DIE_DEBUG:
>> - if (post_kprobe_handler(args->regs)) {
>> - /*
>> - * Reset the BS bit in dr6 (pointed by args->err) to
>> - * denote completion of processing
>> - */
>> - (*(unsigned long *)ERR_PTR(args->err)) &= ~DR_STEP;
>> - ret = NOTIFY_STOP;
>> - }
>
> The DIE_DEBUG case is removed but not added anyplace else. The change
> log doesn't say why this was removed.
As you can see the above hunk, post_kprobe_handler() is now renamed
as kprobe_debug_handler() which is called from do_debug() directly.
What I meant in the patch comment;
>> To avoid a kernel crash by probing on lockdep code, call
>> kprobe_int3_handler and kprobe_debug_handler directly
>> from do_int3 and do_debug.
was actually pointing that change...
Thank you,
--
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
next prev parent reply other threads:[~2014-03-24 8:47 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-05 11:58 [PATCH -tip v8 00/26] kprobes: introduce NOKPROBE_SYMBOL, bugfixes and scalbility efforts Masami Hiramatsu
2014-03-05 11:58 ` [PATCH -tip v8 01/26] [BUGFIX]kprobes/x86: Fix page-fault handling logic Masami Hiramatsu
2014-03-21 21:39 ` Steven Rostedt
2014-03-24 1:10 ` Masami Hiramatsu
2014-03-05 11:58 ` [PATCH -tip v8 02/26] kprobes/x86: Allow to handle reentered kprobe on singlestepping Masami Hiramatsu
2014-03-21 21:44 ` Steven Rostedt
2014-03-24 10:07 ` Masami Hiramatsu
2014-03-05 11:59 ` [PATCH -tip v8 03/26] kprobes: Prohibit probing on .entry.text code Masami Hiramatsu
2014-03-21 22:04 ` Steven Rostedt
2014-03-24 1:48 ` Masami Hiramatsu
2014-03-24 18:53 ` Steven Rostedt
2014-03-24 18:55 ` Steven Rostedt
2014-03-05 11:59 ` [PATCH -tip v8 04/26] kprobes: Introduce NOKPROBE_SYMBOL() macro for blacklist Masami Hiramatsu
2014-03-22 0:49 ` Steven Rostedt
2014-03-26 7:04 ` Masami Hiramatsu
2014-03-05 11:59 ` [PATCH -tip v8 05/26] [BUGFIX] kprobes/x86: Prohibit probing on debug_stack_* Masami Hiramatsu
2014-03-22 0:50 ` Steven Rostedt
2014-03-05 11:59 ` [PATCH -tip v8 06/26] [BUGFIX] x86: Prohibit probing on native_set_debugreg/load_idt Masami Hiramatsu
2014-03-22 0:53 ` Steven Rostedt
2014-03-05 11:59 ` [PATCH -tip v8 07/26] [BUGFIX] x86: Prohibit probing on thunk functions and restore Masami Hiramatsu
2014-03-22 1:00 ` Steven Rostedt
2014-03-24 3:03 ` Masami Hiramatsu
2014-03-24 18:56 ` Steven Rostedt
2014-03-05 11:59 ` [PATCH -tip v8 08/26] kprobes/x86: Call exception handlers directly from do_int3/do_debug Masami Hiramatsu
2014-03-22 1:05 ` Steven Rostedt
2014-03-24 8:47 ` Masami Hiramatsu [this message]
2014-03-24 18:58 ` Steven Rostedt
2014-03-05 11:59 ` [PATCH -tip v8 09/26] x86: Call exception_enter after kprobes handled Masami Hiramatsu
2014-03-24 19:31 ` Steven Rostedt
2014-03-05 11:59 ` [PATCH -tip v8 10/26] kprobes/x86: Allow probe on some kprobe preparation functions Masami Hiramatsu
2014-03-24 19:35 ` Steven Rostedt
2014-03-25 9:20 ` Masami Hiramatsu
2014-03-27 5:50 ` Masami Hiramatsu
2014-03-05 12:00 ` [PATCH -tip v8 11/26] kprobes: Allow probe on some kprobe functions Masami Hiramatsu
2014-03-24 19:37 ` Steven Rostedt
2014-03-25 9:22 ` Masami Hiramatsu
2014-03-05 12:00 ` [PATCH -tip v8 12/26] ftrace/*probes: Allow probing on some functions Masami Hiramatsu
2014-03-24 19:38 ` Steven Rostedt
2014-03-25 9:30 ` Masami Hiramatsu
2014-03-05 12:00 ` [PATCH -tip v8 13/26] x86: Allow kprobes on text_poke/hw_breakpoint Masami Hiramatsu
2014-03-24 19:40 ` Steven Rostedt
2014-03-05 12:00 ` [PATCH -tip v8 14/26] x86: Use NOKPROBE_SYMBOL() instead of __kprobes annotation Masami Hiramatsu
2014-03-24 19:45 ` Steven Rostedt
2014-03-25 10:33 ` Masami Hiramatsu
2014-03-05 12:00 ` [PATCH -tip v8 15/26] kprobes: Use NOKPROBE_SYMBOL macro instead of __kprobes Masami Hiramatsu
2014-03-24 19:46 ` Steven Rostedt
2014-03-05 12:00 ` [PATCH -tip v8 16/26] ftrace/kprobes: Use NOKPROBE_SYMBOL macro in ftrace Masami Hiramatsu
2014-03-24 20:10 ` Steven Rostedt
2014-03-25 10:31 ` Masami Hiramatsu
2014-03-05 12:00 ` [PATCH -tip v8 17/26] notifier: Use NOKPROBE_SYMBOL macro in notifier Masami Hiramatsu
2014-03-24 20:12 ` Steven Rostedt
2014-03-25 10:23 ` Masami Hiramatsu
2014-03-25 10:58 ` Steven Rostedt
2014-03-05 12:00 ` [PATCH -tip v8 18/26] sched: Use NOKPROBE_SYMBOL macro in sched Masami Hiramatsu
2014-03-24 20:14 ` Steven Rostedt
2014-03-05 12:00 ` [PATCH -tip v8 19/26] kprobes: Show blacklist entries via debugfs Masami Hiramatsu
2014-03-24 20:19 ` Steven Rostedt
2014-03-25 10:30 ` Masami Hiramatsu
2014-03-05 12:01 ` [PATCH -tip v8 20/26] kprobes: Support blacklist functions in module Masami Hiramatsu
2014-03-05 12:01 ` [PATCH -tip v8 21/26] kprobes: Use NOKPROBE_SYMBOL() in sample modules Masami Hiramatsu
2014-03-05 12:01 ` [PATCH -tip v8 22/26] kprobes/x86: Use kprobe_blacklist for .kprobes.text and .entry.text Masami Hiramatsu
2014-03-05 12:01 ` [PATCH -tip v8 23/26] kprobes/x86: Remove unneeded preempt_disable/enable in interrupt handlers Masami Hiramatsu
2014-03-05 12:01 ` [PATCH -tip v8 24/26] kprobes: Enlarge hash table to 512 entries Masami Hiramatsu
2014-03-05 12:01 ` [PATCH -tip v8 25/26] kprobes: Introduce kprobe cache to reduce cache misshits Masami Hiramatsu
2014-03-05 12:01 ` [PATCH -tip v8 26/26] ftrace: Introduce FTRACE_OPS_FL_SELF_FILTER for ftrace-kprobe Masami Hiramatsu
2014-03-14 13:11 ` [PATCH -tip v8 00/26] kprobes: introduce NOKPROBE_SYMBOL, bugfixes and scalbility efforts 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=532FF10A.8010502@hitachi.com \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=ananth@in.ibm.com \
--cc=andi@firstfloor.org \
--cc=fche@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=sandeepa.prabhu@linaro.org \
--cc=sasha.levin@oracle.com \
--cc=seiji.aguchi@hds.com \
--cc=systemtap@sourceware.org \
--cc=tglx@linutronix.de \
--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 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.