Patch "x86,static_call: Fix static-call vs return-thunk" has been added to the 6.5-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    x86,static_call: Fix static-call vs return-thunk

to the 6.5-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     x86-static_call-fix-static-call-vs-return-thunk.patch
and it can be found in the queue-6.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.


>From aee9d30b9744d677509ef790f30f3a24c7841c3d Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Date: Fri, 22 Sep 2023 10:12:25 +0000
Subject: x86,static_call: Fix static-call vs return-thunk

From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>

commit aee9d30b9744d677509ef790f30f3a24c7841c3d upstream.

Commit

  7825451fa4dc ("static_call: Add call depth tracking support")

failed to realize the problem fixed there is not specific to call depth
tracking but applies to all return-thunk uses.

Move the fix to the appropriate place and condition.

Fixes: ee88d363d156 ("x86,static_call: Use alternative RET encoding")
Reported-by: David Kaplan <David.Kaplan@xxxxxxx>
Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
Signed-off-by: Borislav Petkov (AMD) <bp@xxxxxxxxx>
Reviewed-by: Ingo Molnar <mingo@xxxxxxxxxx>
Tested-by: Borislav Petkov (AMD) <bp@xxxxxxxxx>
Cc: <stable@xxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
 arch/x86/kernel/alternative.c |    3 +++
 arch/x86/kernel/callthunks.c  |    1 -
 2 files changed, 3 insertions(+), 1 deletion(-)

--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -720,6 +720,9 @@ void __init_or_module noinline apply_ret
 {
 	s32 *s;
 
+	if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
+		static_call_force_reinit();
+
 	for (s = start; s < end; s++) {
 		void *dest = NULL, *addr = (void *)s + *s;
 		struct insn insn;
--- a/arch/x86/kernel/callthunks.c
+++ b/arch/x86/kernel/callthunks.c
@@ -272,7 +272,6 @@ void __init callthunks_patch_builtin_cal
 	pr_info("Setting up call depth tracking\n");
 	mutex_lock(&text_mutex);
 	callthunks_setup(&cs, &builtin_coretext);
-	static_call_force_reinit();
 	thunks_initialized = true;
 	mutex_unlock(&text_mutex);
 }


Patches currently in stable-queue which might be from peterz@xxxxxxxxxxxxx are

queue-6.5/kernel-fork-beware-of-__put_task_struct-calling-cont.patch
queue-6.5/x86-ibt-avoid-duplicate-endbr-in-__put_user_nocheck.patch
queue-6.5/x86-static_call-fix-static-call-vs-return-thunk.patch
queue-6.5/x86-ibt-suppress-spurious-endbr.patch
queue-6.5/x86-sched-restore-the-sd_asym_packing-flag-in-the-di.patch



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux