x86/entry: Move thunk restore code into thunk functions
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: fedb724c3d
("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>
This commit is contained in:
parent
020126239b
commit
ac27ecf68a
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue