From: sashiko-bot@kernel.org
To: "Kevin Brodsky" <kevin.brodsky@arm.com>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Ard Biesheuvel" <ardb+git@google.com>,
"Andy Lutomirski" <luto@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
"David Hildenbrand (Arm)" <david@kernel.org>,
"Jann Horn" <jannh@google.com>, "Jeff Xu" <jeffxu@chromium.org>,
"Joey Gouly" <joey.gouly@arm.com>, "Kees Cook" <kees@kernel.org>,
"Linu Cherian" <linu.cherian@arm.com>,
"Linus Walleij" <linusw@kernel.org>,
"Marc Zyngier" <maz@kernel.org>,
"Mark Brown" <broonie@kernel.org>,
"Matthew Wilcox" <willy@infradead.org>,
"Maxwell Bland" <mbland@motorola.com>,
"Mike Rapoport (IBM)" <rppt@kernel.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Pierre Langlois" <pierre.langlois@arm.com>,
"Pierre-Clément Tosi" <ptosi@google.com>,
"Quentin Perret" <qperret@google.com>,
"Rick Edgecombe" <rick.p.edgecombe@intel.com>,
"Ryan Roberts" <ryan.roberts@arm.com>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Will Deacon" <will@kernel.org>,
"Yang Shi" <yang@os.amperecomputing.com>,
"Yeoreum Yun" <yeoreum.yun@arm.com>,
linux-mm@kvack.org, x86@kernel.org,
"Ira Weiny" <iweiny@kernel.org>,
"Lorenzo Stoakes" <ljs@kernel.org>,
"Thomas Gleixner" <tglx@kernel.org>
Subject: Re: [PATCH RFC v10 10/22] arm64: Enable kpkeys
Date: Tue, 10 Nov 2026 16:02:51 +0000 [thread overview]
Message-ID: <sashiko-outbox-207324@kernel.org> (raw)
In-Reply-To: <20261109-kpkeys-v10-10-aa6c4d9603bc@arm.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Medium] arm64: cpufeature: cpu_enable_poe() enables TCR2_EL1_POE
without S1PIE
--
commit 916b4efd6b8494c5d63fd0effff9032def1dba2d
Author: Kevin Brodsky <kevin.brodsky@arm.com>
arm64: Enable kpkeys
This commit enables POE at EL1 by initializing POR_EL1, setting
TCR2_EL1.POE in cpu_enable_poe(), and selecting ARCH_HAS_KPKEYS under
CONFIG_ARM64_POE.
> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> index 34c5c03c0c9b4..42d693197739c 100644
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
[ ... ]
> @@ -2334,8 +2335,10 @@ static void cpu_enable_mops(const struct arm64_cpu_capabilities *__unused)
> #ifdef CONFIG_ARM64_POE
> static void cpu_enable_poe(const struct arm64_cpu_capabilities *__unused)
> {
> - sysreg_clear_set(REG_TCR2_EL1, 0, TCR2_EL1_E0POE);
> + write_sysreg_s(POR_EL1_INIT, SYS_POR_EL1);
> + sysreg_clear_set(REG_TCR2_EL1, 0, TCR2_EL1_E0POE | TCR2_EL1_POE);
> sysreg_clear_set(CPACR_EL1, 0, CPACR_EL1_E0POE);
> + isb();
> }
> #endif
[Severity: Medium]
Does enabling TCR2_EL1_POE here break privileged EL1 accesses to user
memory when S1POE is present without S1PIE (for example, in a KVM guest
configured with FEAT_S1POE=1 and FEAT_S1PIE=0)?
Commit "arm64: mm: Enable overlays for all EL1 indirect permissions" relies
on PIR_EL1 (PIE_E1) leaving user memory types without overlay (_O) so that
privileged EL1 accesses to user pages (such as futex_atomic_op_inuser()
using uaccess_enable_privileged() when FEAT_LSUI is absent) are not checked
against POR_EL1. When S1PIE is absent, stage-1 translations use direct
permissions and TCR2_EL1_POE applies POR_EL1 to all privileged accesses,
including TTBR0 user mappings.
Because POR_EL1_INIT only permits pkey 0, a user mapping with pkey 1..7
causes futex_atomic_op_inuser() to fault against POR_EL1 while
fault_in_user_writeable() succeeds with unprivileged sttr against POR_EL0,
resulting in an unbounded retry loop in futex_wake_op().
Should TCR2_EL1_POE and arch_supports_kpkeys() (or ARM64_HAS_S1POE itself)
require S1PIE to be supported and enabled?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261109-kpkeys-v10-0-aa6c4d9603bc@arm.com?part=10
next prev parent reply other threads:[~2026-11-10 16:03 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-09 15:58 [PATCH RFC v10 00/22] pkeys-based page table hardening Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 01/22] mm: Introduce kpkeys Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-11 10:24 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 02/22] set_memory: Introduce set_direct_map_pkey() stub Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 03/22] arm64: Introduce por_elx_set_pkey_perms() helper Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 04/22] arm64: Implement asm/kpkeys.h using POE Kevin Brodsky
2026-11-10 14:19 ` Mark Brown
2026-11-11 10:26 ` Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-11 15:18 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 05/22] arm64: set_memory: Implement set_direct_map_pkey() Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 06/22] arm64: Disable EL2 trapping of POR_EL1 Kevin Brodsky
2026-11-10 15:29 ` Mark Brown
2026-11-11 15:22 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 07/22] arm64: Initialize POR_EL1 register on cpu_resume() Kevin Brodsky
2026-11-10 15:53 ` Mark Brown
2026-11-10 16:36 ` Yeoreum Yun
2026-11-12 12:38 ` Kevin Brodsky
2026-11-12 13:02 ` Mark Brown
2026-11-12 13:14 ` Yeoreum Yun
2026-11-12 14:09 ` Mark Brown
2026-11-12 13:16 ` Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 08/22] arm64: Context-switch POR_EL1 Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 09/22] arm64: mm: Enable overlays for all EL1 indirect permissions Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 10/22] arm64: Enable kpkeys Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot [this message]
2026-11-09 15:58 ` [PATCH RFC v10 11/22] mm: kpkeys: Introduce kpkeys_hardened_pgtables feature Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 12/22] mm: kpkeys: Protect regular page tables Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 13/22] mm: kpkeys: Protect early kernel " Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-12 11:28 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 14/22] mm: kpkeys: Protect vmemmap " Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 15/22] arm64: kpkeys: Implement arch_supports_kpkeys_early() Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 16/22] arm64: kpkeys: Support KPKEYS_CTX_PGTABLES Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 17/22] arm64: kpkeys: Ensure the linear map can be modified Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 18/22] arm64: kpkeys: Guard page table writes Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 19/22] arm64: kpkeys: Batch KPKEYS_CTX_PGTABLES switches Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-12 13:21 ` Kevin Brodsky
2026-11-09 15:58 ` [PATCH RFC v10 20/22] arm64: kpkeys: Enable kpkeys_hardened_pgtables support Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 21/22] arm64: mm: Map kernel image alias of init_pg_dir read-only Kevin Brodsky
2026-11-10 16:02 ` sashiko-bot
2026-11-09 15:58 ` [PATCH RFC v10 22/22] mm: Add basic tests for kpkeys_hardened_pgtables Kevin Brodsky
2026-11-09 19:28 ` Mark Brown
2026-11-10 9:01 ` Kevin Brodsky
2026-11-10 11:24 ` Mark Brown
2026-11-11 15:29 ` Kevin Brodsky
2026-11-11 16:15 ` Mark Brown
2026-11-12 11:39 ` Kevin Brodsky
2026-11-10 16:03 ` sashiko-bot
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=sashiko-outbox-207324@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=ardb+git@google.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=dave.hansen@linux.intel.com \
--cc=david@kernel.org \
--cc=iweiny@kernel.org \
--cc=jannh@google.com \
--cc=jeffxu@chromium.org \
--cc=joey.gouly@arm.com \
--cc=kees@kernel.org \
--cc=kevin.brodsky@arm.com \
--cc=linu.cherian@arm.com \
--cc=linusw@kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=luto@kernel.org \
--cc=maz@kernel.org \
--cc=mbland@motorola.com \
--cc=peterz@infradead.org \
--cc=pierre.langlois@arm.com \
--cc=ptosi@google.com \
--cc=qperret@google.com \
--cc=rick.p.edgecombe@intel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=tglx@kernel.org \
--cc=vbabka@kernel.org \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
--cc=yang@os.amperecomputing.com \
--cc=yeoreum.yun@arm.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.