All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Brian Gerst <brgerst@gmail.com>, Peter Zijlstra <peterz@infradead.org>
Cc: the arch/x86 maintainers <x86@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Kyle Huey <me@kylehuey.com>,
	"Alexandre Chartre" <alexandre.chartre@oracle.com>,
	Robert O'Callahan <rocallahan@gmail.com>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	"Frederic Weisbecker" <frederic@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Sean Christopherson" <sean.j.christopherson@intel.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Petr Mladek <pmladek@suse.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Joel Fernandes <joel@joelfernandes.org>,
	"Boris Ostrovsky" <boris.ostrovsky@oracle.com>,
	Juergen Gross <jgross@suse.com>,
	"Andy Lutomirski" <luto@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	"Daniel Thompson" <daniel.thompson@linaro.org>
Subject: Re: [PATCH 01/13] x86/entry: Fix AC assertion
Date: Wed, 2 Sep 2020 17:26:35 +0100	[thread overview]
Message-ID: <f3441d27-1ae1-ddc8-de6d-519ed825b2b8@citrix.com> (raw)
In-Reply-To: <CAMzpN2i9C5Sj-M0b9Y7VtOphDJs2Z9NPux9Dg347PSeNBaXRMQ@mail.gmail.com>

On 02/09/2020 16:58, Brian Gerst wrote:
> On Wed, Sep 2, 2020 at 9:38 AM Peter Zijlstra <peterz@infradead.org> wrote:
>> From: Peter Zijlstra <peterz@infradead.org>
>>
>> The WARN added in commit 3c73b81a9164 ("x86/entry, selftests: Further
>> improve user entry sanity checks") unconditionally triggers on my IVB
>> machine because it does not support SMAP.
>>
>> For !SMAP hardware we patch out CLAC/STAC instructions and thus if
>> userspace sets AC, we'll still have it set after entry.
>>
>> Fixes: 3c73b81a9164 ("x86/entry, selftests: Further improve user entry sanity checks")
>> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
>> Acked-by: Andy Lutomirski <luto@kernel.org>
>> ---
>>  arch/x86/include/asm/entry-common.h |   11 +++++++++--
>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> --- a/arch/x86/include/asm/entry-common.h
>> +++ b/arch/x86/include/asm/entry-common.h
>> @@ -18,8 +18,16 @@ static __always_inline void arch_check_u
>>                  * state, not the interrupt state as imagined by Xen.
>>                  */
>>                 unsigned long flags = native_save_fl();
>> -               WARN_ON_ONCE(flags & (X86_EFLAGS_AC | X86_EFLAGS_DF |
>> -                                     X86_EFLAGS_NT));
>> +               unsigned long mask = X86_EFLAGS_DF | X86_EFLAGS_NT;
>> +
>> +               /*
>> +                * For !SMAP hardware we patch out CLAC on entry.
>> +                */
>> +               if (boot_cpu_has(X86_FEATURE_SMAP) ||
>> +                   (IS_ENABLED(CONFIG_64_BIT) && boot_cpu_has(X86_FEATURE_XENPV)))
>> +                       mask |= X86_EFLAGS_AC;
> Is the explicit Xen check necessary?  IIRC the Xen hypervisor will
> filter out the SMAP bit in the cpuid pvop.

The Xen check isn't anything to do with SMAP.

64bit PV guest kernels run in Ring3, so userspace's choice of AC for
real alignment check purposes needs to not leak into kernel context.

Xen's ABI for a user => kernel context switch should clear AC on behalf
of the kernel, but the fact still remains that if AC actually leaks into
context for whatever reason, stuff is going to break.

~Andrew

  parent reply	other threads:[~2020-09-02 16:27 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-02 13:25 [PATCH 00/13] x86/debug: Untangle handle_debug() Peter Zijlstra
2020-09-02 13:25 ` [PATCH 01/13] x86/entry: Fix AC assertion Peter Zijlstra
2020-09-02 15:58   ` Brian Gerst
2020-09-02 16:24     ` Jürgen Groß
2020-09-02 16:31       ` peterz
2020-09-02 17:02         ` Brian Gerst
2020-09-02 16:26     ` Andrew Cooper [this message]
2020-09-04 13:16   ` [tip: x86/urgent] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 02/13] x86/debug: Allow a single level of #DB recursion Peter Zijlstra
2020-09-02 23:59   ` Sasha Levin
2020-09-03 16:12   ` Josh Poimboeuf
2020-09-02 13:25 ` [PATCH 03/13] x86/debug: Sync BTF earlier Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 04/13] x86/debug: Move kprobe_debug_handler() into exc_debug_kernel() Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 05/13] x86/debug: Remove handle_debug(.user) argument Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 06/13] x86/debug: Simplify #DB signal code Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 07/13] x86/debug: Move historical SYSENTER junk into exc_debug_kernel() Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 08/13] x86/debug: Move cond_local_irq_enable() block into exc_debug_user() Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 09/13] x86/debug: Remove the historical junk Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:25 ` [PATCH 10/13] x86/debug: Remove aout_dump_debugregs() Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:26 ` [PATCH 11/13] x86/debug: Simplify hw_breakpoint_handler() Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:26 ` [RFC][PATCH 12/13] x86/debug: Support negative polarity DR6 bits Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-02 13:26 ` [RFC][PATCH 13/13] x86/debug: Change thread.debugreg6 to thread.virtual_dr6 Peter Zijlstra
2020-09-04 13:16   ` [tip: x86/entry] " tip-bot2 for Peter Zijlstra
2020-09-03 15:21 ` [PATCH 00/13] x86/debug: Untangle handle_debug() Daniel Thompson

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=f3441d27-1ae1-ddc8-de6d-519ed825b2b8@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=alexandre.chartre@oracle.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=brgerst@gmail.com \
    --cc=daniel.thompson@linaro.org \
    --cc=frederic@kernel.org \
    --cc=jgross@suse.com \
    --cc=joel@joelfernandes.org \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=me@kylehuey.com \
    --cc=mhiramat@kernel.org \
    --cc=paulmck@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=rocallahan@gmail.com \
    --cc=rostedt@goodmis.org \
    --cc=sean.j.christopherson@intel.com \
    --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.