lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 14 May 2020 20:16:52 -0400 From: Boris Ostrovsky <boris.ostrovsky@...cle.com> To: Thomas Gleixner <tglx@...utronix.de>, LKML <linux-kernel@...r.kernel.org> Cc: x86@...nel.org, "Paul E. McKenney" <paulmck@...nel.org>, Andy Lutomirski <luto@...nel.org>, Alexandre Chartre <alexandre.chartre@...cle.com>, Frederic Weisbecker <frederic@...nel.org>, Paolo Bonzini <pbonzini@...hat.com>, Sean Christopherson <sean.j.christopherson@...el.com>, Masami Hiramatsu <mhiramat@...nel.org>, Petr Mladek <pmladek@...e.com>, Steven Rostedt <rostedt@...dmis.org>, Joel Fernandes <joel@...lfernandes.org>, Juergen Gross <jgross@...e.com>, Brian Gerst <brgerst@...il.com>, Mathieu Desnoyers <mathieu.desnoyers@...icios.com>, Josh Poimboeuf <jpoimboe@...hat.com>, Will Deacon <will@...nel.org>, Tom Lendacky <thomas.lendacky@....com>, Wei Liu <wei.liu@...nel.org>, Michael Kelley <mikelley@...rosoft.com>, Jason Chen CJ <jason.cj.chen@...el.com>, Zhao Yakui <yakui.zhao@...el.com>, "Peter Zijlstra (Intel)" <peterz@...radead.org> Subject: Re: [patch V5 24/38] x86/entry: Provide IDTENTRY_SYSVEC On 5/12/20 5:01 PM, Thomas Gleixner wrote: > + > +/** > + * DEFINE_IDTENTRY_SYSVEC - Emit code for system vector IDT entry points > + * @func: Function name of the entry point > + * > + * idtentry_enter/exit() and irq_enter/exit_rcu() are invoked before the > + * function body. KVM L1D flush request is set. This is used for entry points for Xen and hyperV as well. Even though it's harmless at the moment, do we still want to set this flag for non-KVM? -boris > + * > + * Runs the function on the interrupt stack if the entry hit kernel mode > + */ > +#define DEFINE_IDTENTRY_SYSVEC(func) \ > +static void __##func(struct pt_regs *regs); \ > + \ > +__visible noinstr void func(struct pt_regs *regs) \ > +{ \ > + idtentry_enter(regs); \ > + instrumentation_begin(); \ > + irq_enter_rcu(); \ > + kvm_set_cpu_l1tf_flush_l1d(); \ > + if (!irq_needs_irq_stack(regs)) \ > + __##func (regs); \ > + else \ > + run_on_irqstack(__##func, regs); \ > + irq_exit_rcu(); \ > + lockdep_hardirq_exit(); \ > + instrumentation_end(); \ > + idtentry_exit(regs); \ > +} \ > + \ > +static noinline void __##func(struct pt_regs *regs)
Powered by blists - more mailing lists