All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: "Li, Xin3" <xin3.li@intel.com>, Brian Gerst <brgerst@gmail.com>,
	"Hansen, Dave" <dave.hansen@intel.com>
Cc: "tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: the x86 sysret_rip test fails on the Intel FRED architecture
Date: Sat, 21 Jan 2023 19:28:15 -0800	[thread overview]
Message-ID: <C3617458-3629-440D-A914-6792DBA03943@zytor.com> (raw)
In-Reply-To: <SA1PR11MB6734368CB5479E2D1C03C978A8CB9@SA1PR11MB6734.namprd11.prod.outlook.com>

On January 21, 2023 7:01:53 PM PST, "Li, Xin3" <xin3.li@intel.com> wrote:
>> > >> If not intentional, it might be something that can still be fixed.
>> > >> If it is intentional and is going to be with us for a while we have
>> > >> a few options.  If userspace is _really_ depending on this
>> > >> behavior, we could just clobber r11 ourselves in the FRED entry
>> > >> path.  If not, we can remove the assertion in the selftest.
>> > > We can't clobber it in the FRED entry path, since it is common for
>> > > all events, but we could do it in the syscall dispatch.
>> > >
>> > > However, it doesn't seem to make sense to do so to me. The current
>> > > behavior is much more of an artifact than desired behavior.
>> > I guess the SDM statements really are for the kernel's benefit and not
>> > for userspace.  Userspace _should_ be treating SYSCALL like a CALL and
>> > r11 like any old register that can be clobbered.  Right now, the
>> > kernel just happens to clobber it with RFLAGS.
>> >
>> > I do the the odds of anyone relying on this behavior are pretty small.
>> > Let's just zap the check from the selftest, document what we did in
>> > the FRED docs and changelog and move on.
>> 
>> Keep the selftest check, but also accept preserved RCX/R11.  What really matters is
>> that the kernel isn't leaking data.
>
>I feel it the same way, it looks to me that the check is to make sure
>R11 doesn't leak any kernel data because the Linux kernel deliberately
>overwrites R11 with the value of user level flags just before returning
>to user level.
>
>I wanted to zap the check, but as HPA said, this is an artifact to not leak
>any kernel data.  I guess it doesn't make a difference if the kernel sets
>R11 to 0.
>
>Maybe it's still reasonable to keep such a check for IDT.  However, it makes
>no sense for FRED systems, because all GP registers are saved/restored upon
>event delivery/return.
>
>Thanks!
>  Xin
>
>> 
>> --
>> Brian Gerst
>

The big thing is that the system calls that return with sysret v iret on IDT systems need to be consistent, in order to not leak kernel state.

  reply	other threads:[~2023-01-22  3:29 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <SA1PR11MB6734FA9139B9C9F6CC2ED123A8C59@SA1PR11MB6734.namprd11.prod.outlook.com>
2023-01-20 17:45 ` the x86 sysret_rip test fails on the Intel FRED architecture Dave Hansen
     [not found]   ` <eb81f7f2-d266-d999-b41a-e6eae086e731@citrix.com>
2023-01-20 20:50     ` H. Peter Anvin
2023-01-20 21:10       ` Andrew Cooper
2023-01-20 21:17         ` H. Peter Anvin
2023-01-20 21:29           ` Andrew Cooper
2023-01-21  4:59   ` H. Peter Anvin
2023-01-21 16:46     ` Dave Hansen
2023-01-21 21:47       ` Brian Gerst
2023-01-22  3:01         ` Li, Xin3
2023-01-22  3:28           ` H. Peter Anvin [this message]
2023-01-22  3:38     ` Li, Xin3
2023-01-22  4:34       ` Dave Hansen
2023-01-22  4:44         ` H. Peter Anvin
2023-01-22  8:22           ` Li, Xin3
2023-01-22  8:54             ` Ammar Faizi
2023-01-22  9:40               ` H. Peter Anvin
2023-01-22 23:45         ` H. Peter Anvin
2023-01-23  9:02           ` Ammar Faizi
2023-01-23 19:43             ` H. Peter Anvin
2023-01-23 23:43               ` Ammar Faizi
2023-01-23 23:58                 ` H. Peter Anvin
2023-01-24  0:26                   ` [RFC PATCH v1 0/2] selftests/x86: sysret_rip update for FRED system Ammar Faizi
2023-01-24  0:26                     ` [RFC PATCH v1 1/2] selftests/x86: sysret_rip: Handle syscall in a " Ammar Faizi
2023-01-24  1:40                       ` H. Peter Anvin
2023-01-24  2:31                         ` Ammar Faizi
2023-01-26 20:08                         ` Ammar Faizi
2023-02-15  9:17                           ` Andrew Cooper
2023-02-15 10:29                             ` Andrew Cooper
2023-02-15 10:44                               ` Ammar Faizi
2023-02-15 10:42                             ` Ammar Faizi
2023-01-26 20:16                         ` Ammar Faizi
2023-01-24  0:26                     ` [RFC PATCH v1 2/2] selftests/x86: sysret_rip: Add more syscall tests with respect to `%rcx` and `%r11` Ammar Faizi
2023-01-23 23:53             ` the x86 sysret_rip test fails on the Intel FRED architecture Andrew Cooper
2023-01-24  0:01               ` H. Peter Anvin
2023-01-24  2:27                 ` [RFC PATCH v2 0/2] selftests/x86: sysret_rip update for FRED system Ammar Faizi
2023-01-24  2:27                   ` [RFC PATCH v2 1/2] selftests/x86: sysret_rip: Handle syscall in a " Ammar Faizi
2023-01-24  5:44                     ` H. Peter Anvin
2023-01-24  2:27                   ` [RFC PATCH v2 2/2] selftests/x86: sysret_rip: Add more syscall tests with respect to `%rcx` and `%r11` Ammar Faizi
2023-01-24  6:16                     ` H. Peter Anvin
2023-01-24  6:41                       ` Ammar Faizi
2023-01-24  6:47                         ` Ammar Faizi
2023-01-24  9:07                         ` H. Peter Anvin
2023-01-24  9:12                           ` Ammar Faizi
2023-01-24 10:09                             ` [RFC PATCH v3 0/2] selftests/x86: sysret_rip update for FRED system Ammar Faizi
2023-01-24 10:09                               ` [RFC PATCH v3 1/2] selftests/x86: sysret_rip: Handle syscall in a " Ammar Faizi
2023-01-24 10:09                               ` [RFC PATCH v3 2/2] selftests/x86: sysret_rip: Add more syscall tests with respect to `%rcx` and `%r11` Ammar Faizi
2023-01-24 20:59                                 ` H. Peter Anvin
2023-01-25  3:29                                   ` Ammar Faizi
2023-01-24 21:32                               ` [RFC PATCH v3 0/2] selftests/x86: sysret_rip update for FRED system Li, Xin3
2023-01-24 21:37                                 ` H. Peter Anvin
2023-01-24 23:20                                   ` Li, Xin3
2023-01-25  3:27                                   ` Ammar Faizi
2023-01-24 21:51                                 ` Andrew Cooper
2023-01-24 23:58                                   ` Li, Xin3
2023-01-25  3:22                             ` [RFC PATCH v4 0/2] sysret_rip update for the Intel FRED architecture Ammar Faizi
2023-01-25  3:22                               ` [RFC PATCH v4 1/2] selftests/x86: sysret_rip: Handle syscall in a FRED system Ammar Faizi
2023-01-25  3:37                                 ` Ammar Faizi
2023-01-25  3:44                                   ` Ammar Faizi
2023-01-25  3:22                               ` [RFC PATCH v4 2/2] selftests/x86: sysret_rip: Add more syscall tests with respect to `%rcx` and `%r11` Ammar Faizi
2023-01-25  3:49                             ` [RFC PATCH v5 0/2] sysret_rip update for the Intel FRED architecture Ammar Faizi
2023-01-25  3:49                               ` [RFC PATCH v5 1/2] selftests/x86: sysret_rip: Handle syscall in a FRED system Ammar Faizi
2023-01-25  8:39                                 ` H. Peter Anvin
2023-01-25  8:53                                   ` Ammar Faizi
2023-01-25  9:57                                   ` Ammar Faizi
2023-01-25 10:01                                     ` Ammar Faizi
2023-01-25 10:17                                     ` H. Peter Anvin
2023-01-25 11:37                                       ` Ammar Faizi
2023-01-25 17:25                                         ` H. Peter Anvin
2023-01-25  3:49                               ` [RFC PATCH v5 2/2] selftests/x86: sysret_rip: Add more syscall tests with respect to `%rcx` and `%r11` Ammar Faizi
2023-01-25  8:22                               ` [RFC PATCH v5 0/2] sysret_rip update for the Intel FRED architecture Li, Xin3
2023-01-25  8:32                                 ` Ammar Faizi
2023-01-25 17:07                                   ` Li, Xin3
2023-01-25 17:24                                     ` H. Peter Anvin
2023-01-25 17:41                                       ` Ammar Faizi
2023-01-25 17:48                                         ` Li, Xin3
2023-02-15  7:42                                           ` Li, Xin3
2023-02-15  7:51                                             ` Ammar Faizi
2023-02-18  4:27                                             ` Ammar Faizi
2023-02-18  4:51                                               ` H. Peter Anvin
2023-01-25 21:17                             ` [RFC PATCH v6 0/3] " Ammar Faizi
2023-01-25 21:17                               ` [RFC PATCH v6 1/3] selftests/x86: sysret_rip: Handle syscall in a FRED system Ammar Faizi
2023-01-25 23:01                                 ` Ammar Faizi
2023-01-25 21:17                               ` [RFC PATCH v6 2/3] selftests/x86: sysret_rip: Add more syscall tests with respect to `%rcx` and `%r11` Ammar Faizi
2023-01-25 21:17                               ` [RFC PATCH v6 3/3] selftests/x86: sysret_rip: Test opportunistic SYSRET Ammar Faizi
2023-01-25 23:24                             ` [RFC PATCH v7 0/3] sysret_rip update for the Intel FRED architecture Ammar Faizi
2023-01-25 23:24                               ` [RFC PATCH v7 1/3] selftests/x86: sysret_rip: Handle syscall in a FRED system Ammar Faizi
2023-01-25 23:24                               ` [RFC PATCH v7 2/3] selftests/x86: sysret_rip: Add more syscall tests with respect to `%rcx` and `%r11` Ammar Faizi
2023-01-25 23:24                               ` [RFC PATCH v7 3/3] selftests/x86: sysret_rip: Test SYSRET with a signal handler Ammar Faizi

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=C3617458-3629-440D-A914-6792DBA03943@zytor.com \
    --to=hpa@zytor.com \
    --cc=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xin3.li@intel.com \
    /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.