The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Dave Hansen <dave.hansen@intel.com>
To: Dmitry Vyukov <dvyukov@google.com>,
	mathieu.desnoyers@efficios.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 2/4] x86/signal: Use switch_to_permissive_pkey_reg() helper
Date: Fri, 21 Feb 2025 08:26:46 -0800	[thread overview]
Message-ID: <d6d7745f-ad25-4faa-a3a3-65a4604e8592@intel.com> (raw)
In-Reply-To: <6a97e9986b0fb05935204f55f8d16fc5e66f0ccf.1739790300.git.dvyukov@google.com>

...
> -/*
> - * Enable all pkeys temporarily, so as to ensure that both the current
> - * execution stack as well as the alternate signal stack are writeable.
> - * The application can use any of the available pkeys to protect the
> - * alternate signal stack, and we don't know which one it is, so enable
> - * all. The PKRU register will be reset to init_pkru later in the flow,
> - * in fpu__clear_user_states(), and it is the application's responsibility
> - * to enable the appropriate pkey as the first step in the signal handler
> - * so that the handler does not segfault.
> - */
> -static inline u32 sig_prepare_pkru(void)
> -{
> -	u32 orig_pkru = read_pkru();
> -
> -	write_pkru(0);
> -	return orig_pkru;
> -}
> -
>  /*
>   * Set up a signal frame.
>   */
> @@ -157,8 +140,18 @@ get_sigframe(struct ksignal *ksig, struct pt_regs *regs, size_t frame_size,
>  		return (void __user *)-1L;
>  	}
>  
> -	/* Update PKRU to enable access to the alternate signal stack. */
> -	pkru = sig_prepare_pkru();
> +	/*
> +	 * Enable all pkeys temporarily, so as to ensure that both the current
> +	 * execution stack as well as the alternate signal stack are
> +	 * writeable. The application can use any of the available pkeys to
> +	 * protect the alternate signal stack, and we don't know which one it
> +	 * is, so enable all. The PKRU register will be reset to init_pkru
> +	 * later in the flow, in fpu__clear_user_states(), and it is the
> +	 * application's responsibility to enable the appropriate pkey as the
> +	 * first step in the signal handler so that the handler does not
> +	 * segfault.
> +	 */
> +	pkru = switch_to_permissive_pkey_reg();
I think this hurts readability too much in the get_sigframe() code. On
some level, it's silly to have a basically empty helper. But in this
case, it does help keep the signal code readable.

In other words, this would be preferred:

/*
 * Keep existing big comment
 */
static inline u32 sig_prepare_pkru(void)
{
	return switch_to_permissive_pkey_reg();
}

  reply	other threads:[~2025-02-21 16:26 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 [this message]
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
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=d6d7745f-ad25-4faa-a3a3-65a4604e8592@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox