]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 20 Jun 2025 15:56:29 +0000 (17:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 20 Jun 2025 15:56:29 +0000 (17:56 +0200)
added patches:
x86-pkeys-simplify-pkru-update-in-signal-frame.patch

queue-6.15/series
queue-6.15/x86-pkeys-simplify-pkru-update-in-signal-frame.patch [new file with mode: 0644]

index dcd47b4adb2f5479aee66b53b23bdae1ab17250b..9e09566b2c7a8e8e2de49fb939f5b8c6c8df7bf4 100644 (file)
@@ -487,3 +487,4 @@ sched_ext-sched-core-don-t-call-scx_group_set_weight-prematurely-from-sched_crea
 atm-revert-atm_account_tx-if-copy_from_iter_full-fails.patch
 drm-nouveau-nvkm-factor-out-current-gsp-rpc-command-policies.patch
 drm-nouveau-nvkm-introduce-new-gsp-reply-policy-nvkm_gsp_rpc_reply_poll.patch
+x86-pkeys-simplify-pkru-update-in-signal-frame.patch
diff --git a/queue-6.15/x86-pkeys-simplify-pkru-update-in-signal-frame.patch b/queue-6.15/x86-pkeys-simplify-pkru-update-in-signal-frame.patch
new file mode 100644 (file)
index 0000000..67b9c8f
--- /dev/null
@@ -0,0 +1,70 @@
+From d1e420772cd1eb0afe5858619c73ce36f3e781a1 Mon Sep 17 00:00:00 2001
+From: "Chang S. Bae" <chang.seok.bae@intel.com>
+Date: Tue, 15 Apr 2025 19:16:58 -0700
+Subject: x86/pkeys: Simplify PKRU update in signal frame
+
+From: Chang S. Bae <chang.seok.bae@intel.com>
+
+commit d1e420772cd1eb0afe5858619c73ce36f3e781a1 upstream.
+
+The signal delivery logic was modified to always set the PKRU bit in
+xregs_state->header->xfeatures by this commit:
+
+    ae6012d72fa6 ("x86/pkeys: Ensure updated PKRU value is XRSTOR'd")
+
+However, the change derives the bitmask value using XGETBV(1), rather
+than simply updating the buffer that already holds the value. Thus, this
+approach induces an unnecessary dependency on XGETBV1 for PKRU handling.
+
+Eliminate the dependency by using the established helper function.
+Subsequently, remove the now-unused 'mask' argument.
+
+Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Cc: Andy Lutomirski <luto@kernel.org>
+Cc: Aruna Ramakrishna <aruna.ramakrishna@oracle.com>
+Cc: H. Peter Anvin <hpa@zytor.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Oleg Nesterov <oleg@redhat.com>
+Cc: Tony W Wang-oc <TonyWWang-oc@zhaoxin.com>
+Cc: Dave Hansen <dave.hansen@linux.intel.com>
+Link: https://lore.kernel.org/r/20250416021720.12305-9-chang.seok.bae@intel.com
+Cc: Ben Hutchings <ben@decadent.org.uk>
+Link: https://lore.kernel.org/r/103664a92055a889a08cfc7bbe30084c6cb96eda.camel@decadent.org.uk
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/kernel/fpu/xstate.h |    9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/arch/x86/kernel/fpu/xstate.h
++++ b/arch/x86/kernel/fpu/xstate.h
+@@ -72,18 +72,15 @@ static inline u64 xfeatures_mask_indepen
+ /*
+  * Update the value of PKRU register that was already pushed onto the signal frame.
+  */
+-static inline int update_pkru_in_sigframe(struct xregs_state __user *buf, u64 mask, u32 pkru)
++static inline int update_pkru_in_sigframe(struct xregs_state __user *buf, u32 pkru)
+ {
+-      u64 xstate_bv;
+       int err;
+       if (unlikely(!cpu_feature_enabled(X86_FEATURE_OSPKE)))
+               return 0;
+       /* Mark PKRU as in-use so that it is restored correctly. */
+-      xstate_bv = (mask & xfeatures_in_use()) | XFEATURE_MASK_PKRU;
+-
+-      err =  __put_user(xstate_bv, &buf->header.xfeatures);
++      err = set_xfeature_in_sigframe(buf, XFEATURE_MASK_PKRU);
+       if (err)
+               return err;
+@@ -307,7 +304,7 @@ static inline int xsave_to_user_sigframe
+       clac();
+       if (!err)
+-              err = update_pkru_in_sigframe(buf, mask, pkru);
++              err = update_pkru_in_sigframe(buf, pkru);
+       return err;
+ }