public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <frederic@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
	x86@kernel.org, Steven Rostedt <rostedt@goodmis.org>,
	Brian Gerst <brgerst@gmail.com>, Juergen Gross <jgross@suse.com>,
	Alexandre Chartre <alexandre.chartre@oracle.com>
Subject: Re: [patch part-II V2 02/13] x86/entry: Mark enter_from_user_mode() notrace and NOKPROBE
Date: Mon, 9 Mar 2020 16:14:24 +0100	[thread overview]
Message-ID: <20200309151423.GE9615@lenoir> (raw)
In-Reply-To: <20200308222609.125574449@linutronix.de>

On Sun, Mar 08, 2020 at 11:24:01PM +0100, Thomas Gleixner wrote:
> Both the callers in the low level ASM code and __context_tracking_exit()
> which is invoked from enter_from_user_mode() via user_exit_irqoff() are
> marked NOKPROBE. Allowing enter_from_user_mode() to be probed is
> inconsistent at best.
> 
> Aside of that while function tracing per se is safe the function trace
> entry/exit points can be used via BPF as well which is not safe to use
> before context tracking has reached CONTEXT_KERNEL and adjusted RCU.
> 
> Mark it notrace and NOKROBE.

Ok for the NOKPROBE, also I remember from the inclusion of kprobes
that spreading those NOKPROBE couldn't be more than some sort of best
effort to mitigate the accidents and it's up to the user to keep some
common sense and try to stay away from the borderline functions. The same
would apply to breakpoints, steps, etc...

Now for the BPF and function tracer, the latter has been made robust to
deal with these fragile RCU blind spots. Probably the same requirements should be
expected from the function tracer users. Perhaps we should have a specific
version of __register_ftrace_function() which protects the given probes
inside rcu_nmi_enter()? As it seems the BPF maintainer doesn't want the whole
BPF execution path to be hammered.

Thanks.

> 
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
>  arch/x86/entry/common.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> --- a/arch/x86/entry/common.c
> +++ b/arch/x86/entry/common.c
> @@ -40,11 +40,12 @@
>  
>  #ifdef CONFIG_CONTEXT_TRACKING
>  /* Called on entry from user mode with IRQs off. */
> -__visible inline void enter_from_user_mode(void)
> +__visible inline notrace void enter_from_user_mode(void)
>  {
>  	CT_WARN_ON(ct_state() != CONTEXT_USER);
>  	user_exit_irqoff();
>  }
> +NOKPROBE_SYMBOL(enter_from_user_mode);
>  #else
>  static inline void enter_from_user_mode(void) {}
>  #endif
> 

  reply	other threads:[~2020-03-09 15:14 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-08 22:23 [patch part-II V2 00/13] x86/entry: Consolidation - Part II (syscalls) Thomas Gleixner
2020-03-08 22:24 ` [patch part-II V2 01/13] context_tracking: Ensure that the critical path cannot be instrumented Thomas Gleixner
2020-03-09 14:22   ` Frederic Weisbecker
2020-03-09 14:40     ` Thomas Gleixner
2020-03-10 10:12   ` Alexandre Chartre
2020-03-08 22:24 ` [patch part-II V2 02/13] x86/entry: Mark enter_from_user_mode() notrace and NOKPROBE Thomas Gleixner
2020-03-09 15:14   ` Frederic Weisbecker [this message]
2020-03-09 15:40     ` Thomas Gleixner
2020-03-11 22:21       ` Frederic Weisbecker
2020-03-10 10:15   ` Alexandre Chartre
2020-03-08 22:24 ` [patch part-II V2 03/13] x86/entry/32: Remove unused label restore_nocheck Thomas Gleixner
2020-03-10 10:16   ` Alexandre Chartre
2020-03-10 13:02   ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner
2020-03-08 22:24 ` [patch part-II V2 04/13] x86/entry/64: Trace irqflags unconditionally as ON when returning to user space Thomas Gleixner
2020-03-10 10:25   ` Alexandre Chartre
2020-03-10 13:02   ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner
2020-03-08 22:24 ` [patch part-II V2 05/13] x86/entry/common: Consolidate syscall entry code Thomas Gleixner
2020-03-08 22:24 ` [patch part-II V2 06/13] x86/entry/common: Mark syscall entry points notrace and NOKPROBE Thomas Gleixner
2020-03-13 15:12   ` Frederic Weisbecker
2020-03-08 22:24 ` [patch part-II V2 07/13] x86/entry: Move irq tracing on syscall entry to C-code Thomas Gleixner
2020-03-13 15:16   ` Frederic Weisbecker
2020-03-13 23:17     ` Thomas Gleixner
2020-03-08 22:24 ` [patch part-II V2 08/13] tracing: Provide lockdep less trace_hardirqs_on/off() variants Thomas Gleixner
2020-03-10 10:55   ` Alexandre Chartre
2020-03-10 11:08     ` Borislav Petkov
2020-03-10 11:21       ` Alexandre Chartre
2020-03-08 22:24 ` [patch part-II V2 09/13] x86/entry/common: Split hardirq tracing into lockdep and ftrace parts Thomas Gleixner
2020-03-10 11:20   ` Borislav Petkov
2020-03-10 13:40     ` Steven Rostedt
2020-03-10 13:28   ` Alexandre Chartre
2020-03-23  9:08   ` [x86/entry/common] bae397f6e7: WARNING:at_kernel/sched/cputime.c:#get_vtime_delta kernel test robot
2020-03-08 22:24 ` [patch part-II V2 10/13] x86/entry/common: Split prepare_exit_to_usermode() and syscall_return_slowpath() Thomas Gleixner
2020-03-10 13:37   ` Alexandre Chartre
2020-03-08 22:24 ` [patch part-II V2 11/13] x86/speculation/mds: Mark mds_user_clear_cpu_buffers() __always_inline Thomas Gleixner
2020-03-10 13:48   ` Alexandre Chartre
2020-03-10 16:38     ` Thomas Gleixner
2020-03-08 22:24 ` [patch part-II V2 12/13] x86/entry: Move irq flags tracing to prepare_exit_to_usermode() Thomas Gleixner
2020-03-10 14:03   ` Alexandre Chartre
2020-03-08 22:24 ` [patch part-II V2 13/13] x86/entry/common: Split irq tracing in prepare_exit_to_usermode() Thomas Gleixner
2020-03-10 14:09   ` Alexandre Chartre

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=20200309151423.GE9615@lenoir \
    --to=frederic@kernel.org \
    --cc=alexandre.chartre@oracle.com \
    --cc=brgerst@gmail.com \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox