All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <dave.hansen@intel.com>
To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Dmitry Vyukov <dvyukov@google.com>,
	peterz@infradead.org, boqun.feng@gmail.com, tglx@linutronix.de,
	mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
	hpa@zytor.com, aruna.ramakrishna@oracle.com, elver@google.com
Cc: "Paul E. McKenney" <paulmck@kernel.org>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/4] rseq: Make rseq work with protection keys
Date: Fri, 21 Feb 2025 13:45:13 -0800	[thread overview]
Message-ID: <7d830f4f-dccb-4055-8539-e97432e178eb@intel.com> (raw)
In-Reply-To: <470ee918-59fb-4af8-b5c7-93077963b437@efficios.com>

On 2/21/25 13:36, Mathieu Desnoyers wrote:
>>>
>>
>> Because the rseq return to userspace handler is called on every return
>> to userspace after a task is scheduled back after preemption, I am
>> concerned about the overhead that would be added by a WRPKRU on the
>> fast-path, given that it acts as as barrier against speculation. Issuing
>> WRPKRU only after checking that pkey-0 is not accessible appears to be
>> moving the overhead to a much less common case.
> 
> Actually, we should distinguish between two accesses here:
> 
> A) loads/stores from/to struct rseq
> 
> B) loads from struct rseq_cs (only happens on rseq abort)
> 
> (A) is a fast-path executed on return to userspace after a preemption.
> In order to make it fast, we could require that struct rseq is pkey-0
> and typically skip any WRPKRU for this access when pkey-0 is already
> accessible. We can add a check on rseq registration to make sure that
> struct rseq is indeed pkey-0, and reject it with an error if not. This
> should help make the ABI robust and less error-prone.
> 
> Now for (B), it's a slow path. When we observe that rseq->rseq_cs is
> not NULL, we can simply override with a permissive pkey to make sure
> the rseq_cs access will work.
> 
> Thoughts ?
I think this will be the first ABI which is explicitly pkey-0-only. I
suspect there are a few more of these that are implicit but we just
haven't found them yet.

I wouldn't have any objections about doing this, especially given
sanity checking at rseq registration.

  reply	other threads:[~2025-02-21 21:45 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1739790300.git.dvyukov@google.com>
2025-02-17 11:07 ` [PATCH 1/4] pkeys: add API to switch to permissive pkey register Dmitry Vyukov
2025-02-17 20:03   ` Mathieu Desnoyers
2025-02-17 20:08   ` Mathieu Desnoyers
2025-02-17 20:09     ` Mathieu Desnoyers
2025-02-21 17:01   ` Dave Hansen
2025-02-24 13:25     ` Dmitry Vyukov
2025-02-25 16:15       ` Dave Hansen
2025-02-25 21:56         ` Dmitry Vyukov
2025-02-26 10:00           ` Dmitry Vyukov
2025-02-26 17:21             ` Dave Hansen
2025-02-27 13:58               ` Dmitry Vyukov
2025-02-21 17:37   ` Dave Hansen
2025-02-17 11:07 ` [PATCH 2/4] x86/signal: Use switch_to_permissive_pkey_reg() helper Dmitry Vyukov
2025-02-21 16:26   ` Dave Hansen
2025-02-24 13:13     ` Dmitry Vyukov
2025-02-17 11:07 ` [PATCH 3/4] rseq: Make rseq work with protection keys Dmitry Vyukov
2025-02-17 20:21   ` Mathieu Desnoyers
2025-02-18  7:55     ` Dmitry Vyukov
2025-02-18 14:57       ` Mathieu Desnoyers
2025-02-18 15:10         ` Dmitry Vyukov
2025-02-18 15:27           ` Mathieu Desnoyers
2025-02-18 15:37             ` Dmitry Vyukov
2025-02-21 11:22               ` Dmitry Vyukov
2025-02-21 19:41                 ` Mathieu Desnoyers
2025-02-21 17:17   ` Dave Hansen
2025-02-21 19:38     ` Mathieu Desnoyers
2025-02-21 19:48       ` Dave Hansen
2025-02-21 20:05         ` Mathieu Desnoyers
2025-02-21 20:50           ` Dave Hansen
2025-02-21 21:11             ` Mathieu Desnoyers
2025-02-21 21:36               ` Mathieu Desnoyers
2025-02-21 21:45                 ` Dave Hansen [this message]
2025-02-24 13:35                   ` Dmitry Vyukov
2025-02-21 21:40               ` Dave Hansen
2025-02-17 11:07 ` [PATCH 4/4] selftests/rseq: Add test for rseq+pkeys Dmitry Vyukov
2025-02-17 20:23   ` Mathieu Desnoyers
2025-02-21 17:24   ` Dave Hansen
2025-02-24 13:22     ` Dmitry Vyukov

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=7d830f4f-dccb-4055-8539-e97432e178eb@intel.com \
    --to=dave.hansen@intel.com \
    --cc=aruna.ramakrishna@oracle.com \
    --cc=boqun.feng@gmail.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@redhat.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.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 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.