[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CACT4Y+ZX_HxZQbbmeDnbZgvVqY-p-k+UO8XP7oAMmZMnxufXcg@mail.gmail.com>
Date: Mon, 24 Feb 2025 14:28:13 +0100
From: Dmitry Vyukov <dvyukov@...gle.com>
To: mathieu.desnoyers@...icios.com, peterz@...radead.org, boqun.feng@...il.com,
tglx@...utronix.de, mingo@...hat.com, bp@...en8.de,
dave.hansen@...ux.intel.com, hpa@...or.com, aruna.ramakrishna@...cle.com,
elver@...gle.com, LKML <linux-kernel@...r.kernel.org>,
"the arch/x86 maintainers" <x86@...nel.org>
Subject: Re: [PATCH v4 0/4] rseq: Make rseq work with protection keys
On Mon, 24 Feb 2025 at 14:21, Dmitry Vyukov <dvyukov@...gle.com> wrote:
>
> If an application registers rseq, and ever switches to another pkey
> protection (such that the rseq becomes inaccessible), then any
> context switch will cause failure in __rseq_handle_notify_resume()
> attempting to read/write struct rseq and/or rseq_cs. Since context
> switches are asynchronous and are outside of the application control
> (not part of the restricted code scope), temporarily enable access
> to 0 (default) PKEY to read/write rseq/rseq_cs.
> 0 is the only PKEY supported for rseq for now.
> Theoretically other PKEYs can be supported, but it's unclear
> how/if that can work. So for now we don't support that to simplify
> code.
>
> Dmitry Vyukov (4):
> pkeys: add API to switch to permissive/zero pkey register
> x86/signal: Use write_permissive_pkey_val() helper
> rseq: Make rseq work with protection keys
> selftests/rseq: Add test for rseq+pkeys
>
> arch/x86/Kconfig | 1 +
> arch/x86/include/asm/pkeys.h | 33 ++++++++
> arch/x86/include/asm/pkru.h | 10 ++-
> arch/x86/kernel/signal.c | 6 +-
> include/linux/pkeys.h | 31 ++++++++
> kernel/rseq.c | 11 +++
> mm/Kconfig | 2 +
> tools/testing/selftests/rseq/Makefile | 2 +-
> tools/testing/selftests/rseq/pkey_test.c | 99 ++++++++++++++++++++++++
> tools/testing/selftests/rseq/rseq.h | 1 +
> 10 files changed, 188 insertions(+), 8 deletions(-)
> create mode 100644 tools/testing/selftests/rseq/pkey_test.c
>
>
> base-commit: d082ecbc71e9e0bf49883ee4afd435a77a5101b6
> --
> 2.48.1.601.g30ceb7b040-goog
+LKML/x86 lists for archiving purposes
Powered by blists - more mailing lists