From d452edd7235e7a4d812d364bfec4722dbf1cc5a5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 30 Dec 2023 11:04:56 +0000 Subject: [PATCH] 4.19-stable patches added patches: x86-alternatives-sync-core-before-enabling-interrupts.patch --- queue-4.19/series | 1 + ...sync-core-before-enabling-interrupts.patch | 47 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 queue-4.19/x86-alternatives-sync-core-before-enabling-interrupts.patch diff --git a/queue-4.19/series b/queue-4.19/series index 580a61e782c..f9ee9181314 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -33,3 +33,4 @@ usb-serial-option-add-quectel-rm500q-r13-firmware-support.patch bluetooth-hci_event-fix-not-checking-if-hci_op_inquiry-has-been-sent.patch net-9p-avoid-freeing-uninit-memory-in-p9pdu_vreadf.patch net-rfkill-gpio-set-gpio-direction.patch +x86-alternatives-sync-core-before-enabling-interrupts.patch diff --git a/queue-4.19/x86-alternatives-sync-core-before-enabling-interrupts.patch b/queue-4.19/x86-alternatives-sync-core-before-enabling-interrupts.patch new file mode 100644 index 00000000000..9fc58c831d1 --- /dev/null +++ b/queue-4.19/x86-alternatives-sync-core-before-enabling-interrupts.patch @@ -0,0 +1,47 @@ +From 3ea1704a92967834bf0e64ca1205db4680d04048 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner +Date: Thu, 7 Dec 2023 20:49:24 +0100 +Subject: x86/alternatives: Sync core before enabling interrupts + +From: Thomas Gleixner + +commit 3ea1704a92967834bf0e64ca1205db4680d04048 upstream. + +text_poke_early() does: + + local_irq_save(flags); + memcpy(addr, opcode, len); + local_irq_restore(flags); + sync_core(); + +That's not really correct because the synchronization should happen before +interrupts are re-enabled to ensure that a pending interrupt observes the +complete update of the opcodes. + +It's not entirely clear whether the interrupt entry provides enough +serialization already, but moving the sync_core() invocation into interrupt +disabled region does no harm and is obviously correct. + +Fixes: 6fffacb30349 ("x86/alternatives, jumplabel: Use text_poke_early() before mm_init()") +Signed-off-by: Thomas Gleixner +Signed-off-by: Borislav Petkov (AMD) +Acked-by: Peter Zijlstra (Intel) +Cc: +Link: https://lore.kernel.org/r/ZT6narvE%2BLxX%2B7Be@windriver.com +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kernel/alternative.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/alternative.c ++++ b/arch/x86/kernel/alternative.c +@@ -690,8 +690,8 @@ void *__init_or_module text_poke_early(v + } else { + local_irq_save(flags); + memcpy(addr, opcode, len); +- local_irq_restore(flags); + sync_core(); ++ local_irq_restore(flags); + + /* + * Could also do a CLFLUSH here to speed up CPU recovery; but -- 2.47.3