From: Thomas Gleixner <tglx@linutronix.de> To: LKML <linux-kernel@vger.kernel.org> Cc: x86@kernel.org, Steven Rostedt <rostedt@goodmis.org>, Brian Gerst <brgerst@gmail.com>, Juergen Gross <jgross@suse.com>, Paolo Bonzini <pbonzini@redhat.com>, Arnd Bergmann <arnd@arndb.de>, Andy Lutomirski <luto@kernel.org> Subject: [patch 10/10] x86/traps: Stop using ist_enter/exit() in do_int3() Date: Tue, 25 Feb 2020 22:36:46 +0100 [thread overview] Message-ID: <20200225220217.150607679@linutronix.de> (raw) In-Reply-To: <20200225213636.689276920@linutronix.de> #BP is not longer using IST and using ist_enter() and ist_exit() makes it harder to change ist_enter() and ist_exit()'s behavior. Instead open-code the very small amount of required logic. Signed-off-by: Andy Lutomirski <luto@kernel.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- arch/x86/kernel/traps.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -572,14 +572,20 @@ dotraplinkage void notrace do_int3(struc return; /* - * Use ist_enter despite the fact that we don't use an IST stack. - * We can be called from a kprobe in non-CONTEXT_KERNEL kernel - * mode or even during context tracking state changes. + * Unlike any other non-IST entry, we can be called from a kprobe in + * non-CONTEXT_KERNEL kernel mode or even during context tracking + * state changes. Make sure that we wake up RCU even if we're coming + * from kernel code. * - * This means that we can't schedule. That's okay. + * This means that we can't schedule even if we came from a + * preemptible kernel context. That's okay. */ - ist_enter(regs); + if (!user_mode(regs)) { + rcu_nmi_enter(); + preempt_disable(); + } RCU_LOCKDEP_WARN(!rcu_is_watching(), "entry code didn't wake RCU"); + #ifdef CONFIG_KGDB_LOW_LEVEL_TRAP if (kgdb_ll_trap(DIE_INT3, "int3", regs, error_code, X86_TRAP_BP, SIGTRAP) == NOTIFY_STOP) @@ -600,7 +606,10 @@ dotraplinkage void notrace do_int3(struc cond_local_irq_disable(regs); exit: - ist_exit(regs); + if (!user_mode(regs)) { + preempt_enable_no_resched(); + rcu_nmi_exit(); + } } NOKPROBE_SYMBOL(do_int3);
next prev parent reply other threads:[~2020-02-25 23:30 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-02-25 21:36 [patch 00/10] x86/entry: Consolidation - Part I Thomas Gleixner 2020-02-25 21:36 ` [patch 01/10] x86/entry/32: Add missing ASM_CLAC to general_protection entry Thomas Gleixner 2020-02-26 1:00 ` Frederic Weisbecker 2020-02-27 14:15 ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner 2020-02-25 21:36 ` [patch 02/10] x86/mce: Disable tracing and kprobes on do_machine_check() Thomas Gleixner 2020-02-26 1:13 ` Frederic Weisbecker 2020-02-26 5:29 ` Andy Lutomirski 2020-02-26 13:28 ` Peter Zijlstra 2020-02-26 15:10 ` Andy Lutomirski 2020-02-26 16:08 ` Peter Zijlstra 2020-02-26 17:28 ` Andy Lutomirski 2020-02-26 18:42 ` Borislav Petkov 2020-02-26 18:59 ` Peter Zijlstra 2020-02-26 19:09 ` Andy Lutomirski 2020-02-26 20:59 ` Steven Rostedt 2020-02-26 11:18 ` Borislav Petkov 2020-02-27 14:15 ` [tip: x86/entry] " tip-bot2 for Andy Lutomirski 2020-02-25 21:36 ` [patch 03/10] x86/entry/32: Force MCE through do_mce() Thomas Gleixner 2020-02-26 1:11 ` Frederic Weisbecker 2020-02-27 14:15 ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner 2020-02-25 21:36 ` [patch 04/10] x86/traps: Remove pointless irq enable from do_spurious_interrupt_bug() Thomas Gleixner 2020-02-26 1:19 ` Frederic Weisbecker 2020-02-25 21:36 ` [patch 05/10] x86/traps: Document do_spurious_interrupt_bug() Thomas Gleixner 2020-02-26 17:08 ` Frederic Weisbecker 2020-02-27 14:15 ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner 2020-02-25 21:36 ` [patch 06/10] x86/traps: Remove redundant declaration of do_double_fault() Thomas Gleixner 2020-02-27 14:15 ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner 2020-02-25 21:36 ` [patch 07/10] x86/irq: Remove useless return value from do_IRQ() Thomas Gleixner 2020-02-27 14:15 ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner 2020-02-25 21:36 ` [patch 08/10] x86/entry/32: Remove the 0/-1 distinction from exception entries Thomas Gleixner 2020-02-26 5:34 ` Andy Lutomirski 2020-02-26 18:42 ` Thomas Gleixner 2020-02-26 18:57 ` Andy Lutomirski 2020-02-26 19:15 ` Thomas Gleixner 2020-02-27 14:24 ` [patch V2 " Thomas Gleixner 2020-02-29 11:49 ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner 2020-02-25 21:36 ` [patch 09/10] x86/entry/entry_32: Route int3 through common_exception Thomas Gleixner 2020-02-26 17:35 ` Frederic Weisbecker 2020-02-27 14:15 ` [tip: x86/entry] " tip-bot2 for Thomas Gleixner 2020-02-25 21:36 ` Thomas Gleixner [this message] 2020-02-27 14:15 ` [tip: x86/entry] x86/traps: Stop using ist_enter/exit() in do_int3() tip-bot2 for Thomas Gleixner 2020-02-27 14:33 ` tip-bot2 for Andy Lutomirski 2020-02-26 5:26 ` [patch 00/10] x86/entry: Consolidation - Part I Andy Lutomirski 2020-02-26 5:35 ` Andy Lutomirski 2020-02-27 11:01 ` 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=20200225220217.150607679@linutronix.de \ --to=tglx@linutronix.de \ --cc=arnd@arndb.de \ --cc=brgerst@gmail.com \ --cc=jgross@suse.com \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@kernel.org \ --cc=pbonzini@redhat.com \ --cc=rostedt@goodmis.org \ --cc=x86@kernel.org \ --subject='Re: [patch 10/10] x86/traps: Stop using ist_enter/exit() in do_int3()' \ /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
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.