[RFC PATCH 40/56] x86/alternative: Use sync_core_nmi_safe()

David Kaplan
2025-10-13T14:36:19Z

Re-patching is done under NMI context so the NMI-safe version of
sync_core() must be used.

Signed-off-by: David Kaplan <david.kaplan@amd.com>
---
arch/x86/kernel/alternative.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index b67116ae883c..2d48d750d4d9 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -2585,7 +2585,11 @@ void __init_or_module text_poke_early(void *addr, const void *opcode,
} else {
local_irq_save(flags);
memcpy(addr, opcode, len);
- sync_core();
+ /* Re-patching occurs in NMI context so we can't do IRET. */
+ if (repatch_in_progress)
+ sync_core_nmi_safe();
+ else
+ sync_core();
local_irq_restore(flags);

/*
--
2.34.1