]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/entry: Move thunk restore code into thunk functions
authorJosh Poimboeuf <jpoimboe@kernel.org>
Tue, 30 May 2023 23:07:41 +0000 (16:07 -0700)
committerJosh Poimboeuf <jpoimboe@kernel.org>
Wed, 7 Jun 2023 16:54:45 +0000 (09:54 -0700)
There's no need for both thunk functions to jump to the same shared
thunk restore code which lives outside the thunk function boundaries.
It disrupts i-cache locality and confuses objtool.  Keep it simple by
keeping each thunk's restore code self-contained within the function.

Fixes a bunch of false positive "missing __noreturn" warnings like:

  vmlinux.o: warning: objtool: do_arch_prctl_common+0xf4: preempt_schedule_thunk() is missing a __noreturn annotation

Fixes: fedb724c3db5 ("objtool: Detect missing __noreturn annotations")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202305281037.3PaI3tW4-lkp@intel.com/
Link: https://lore.kernel.org/r/46aa8aeb716f302e22e1673ae15ee6fe050b41f4.1685488050.git.jpoimboe@kernel.org
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
arch/x86/entry/thunk_64.S

index 5e37f41e5f14d483283c8dc81f30463ff228be4b..27b5da2111ac9eb6d7681a79706f7e0c64a7f38b 100644 (file)
@@ -26,17 +26,7 @@ SYM_FUNC_START(\name)
        pushq %r11
 
        call \func
-       jmp  __thunk_restore
-SYM_FUNC_END(\name)
-       _ASM_NOKPROBE(\name)
-       .endm
-
-       THUNK preempt_schedule_thunk, preempt_schedule
-       THUNK preempt_schedule_notrace_thunk, preempt_schedule_notrace
-       EXPORT_SYMBOL(preempt_schedule_thunk)
-       EXPORT_SYMBOL(preempt_schedule_notrace_thunk)
 
-SYM_CODE_START_LOCAL(__thunk_restore)
        popq %r11
        popq %r10
        popq %r9
@@ -48,5 +38,11 @@ SYM_CODE_START_LOCAL(__thunk_restore)
        popq %rdi
        popq %rbp
        RET
-       _ASM_NOKPROBE(__thunk_restore)
-SYM_CODE_END(__thunk_restore)
+SYM_FUNC_END(\name)
+       _ASM_NOKPROBE(\name)
+       .endm
+
+THUNK preempt_schedule_thunk, preempt_schedule
+THUNK preempt_schedule_notrace_thunk, preempt_schedule_notrace
+EXPORT_SYMBOL(preempt_schedule_thunk)
+EXPORT_SYMBOL(preempt_schedule_notrace_thunk)