All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/cpu: Fix check for RDPKRU in __show_regs()
@ 2024-04-21 19:17 bp
  2024-04-24 12:43 ` [tip: x86/urgent] " tip-bot2 for David Kaplan
  0 siblings, 1 reply; 2+ messages in thread
From: bp @ 2024-04-21 19:17 UTC (permalink / raw)
  To: X86 ML; +Cc: LKML, David Kaplan, Borislav Petkov

From: David Kaplan <david.kaplan@amd.com>

cpu_feature_enabled(X86_FEATURE_OSPKE) does not necessarily reflect
whether CR4.PKE is set on the CPU.  In particular, they may differ on
non-BSP CPUs before setup_pku() is executed.  In this scenario, RDPKRU
will #UD causing the system to hang.

Fix by checking CR4 for PKE enablement which is always correct for the
current CPU.

The scenario happens by inserting a WARN* before setup_pku() in
identiy_cpu() or some other diagnostic which would lead to calling
__show_regs().

  [ bp: Massage commit message. ]

Signed-off-by: David Kaplan <david.kaplan@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
---
 arch/x86/kernel/process_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 7062b84dd467..6d3d20e3e43a 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -139,7 +139,7 @@ void __show_regs(struct pt_regs *regs, enum show_regs_mode mode,
 		       log_lvl, d3, d6, d7);
 	}
 
-	if (cpu_feature_enabled(X86_FEATURE_OSPKE))
+	if (cr4 & X86_CR4_PKE)
 		printk("%sPKRU: %08x\n", log_lvl, read_pkru());
 }
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-04-24 12:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-21 19:17 [PATCH] x86/cpu: Fix check for RDPKRU in __show_regs() bp
2024-04-24 12:43 ` [tip: x86/urgent] " tip-bot2 for David Kaplan

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.