x86: Prepare asm files for straight-line-speculation
commit f94909ceb1ed4bfdb2ada72f93236305e6d6951f upstream. Replace all ret/retq instructions with RET in preparation of making RET a macro. Since AS is case insensitive it's a big no-op without RET defined. find arch/x86/ -name \*.S | while read file do sed -i 's/\<ret[q]*\>/RET/' $file done Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Borislav Petkov <bp@suse.de> Link: https://lore.kernel.org/r/20211204134907.905503893@infradead.org [bwh: Backported to 5.10: ran the above command] Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Esse commit está contido em:

commit de
Greg Kroah-Hartman

pai
a512fcd881
commit
3c91e22576
@@ -60,7 +60,7 @@ save_registers:
|
||||
popl saved_context_eflags
|
||||
|
||||
movl $ret_point, saved_eip
|
||||
ret
|
||||
RET
|
||||
|
||||
|
||||
restore_registers:
|
||||
@@ -70,7 +70,7 @@ restore_registers:
|
||||
movl saved_context_edi, %edi
|
||||
pushl saved_context_eflags
|
||||
popfl
|
||||
ret
|
||||
RET
|
||||
|
||||
SYM_CODE_START(do_suspend_lowlevel)
|
||||
call save_processor_state
|
||||
@@ -86,7 +86,7 @@ SYM_CODE_START(do_suspend_lowlevel)
|
||||
ret_point:
|
||||
call restore_registers
|
||||
call restore_processor_state
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(do_suspend_lowlevel)
|
||||
|
||||
.data
|
||||
|
@@ -19,7 +19,7 @@
|
||||
#endif
|
||||
|
||||
SYM_FUNC_START(__fentry__)
|
||||
ret
|
||||
RET
|
||||
SYM_FUNC_END(__fentry__)
|
||||
EXPORT_SYMBOL(__fentry__)
|
||||
|
||||
@@ -84,7 +84,7 @@ ftrace_graph_call:
|
||||
|
||||
/* This is weak to keep gas from relaxing the jumps */
|
||||
SYM_INNER_LABEL_ALIGN(ftrace_stub, SYM_L_WEAK)
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(ftrace_caller)
|
||||
|
||||
SYM_CODE_START(ftrace_regs_caller)
|
||||
@@ -177,7 +177,7 @@ SYM_CODE_START(ftrace_graph_caller)
|
||||
popl %edx
|
||||
popl %ecx
|
||||
popl %eax
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(ftrace_graph_caller)
|
||||
|
||||
.globl return_to_handler
|
||||
|
@@ -132,7 +132,7 @@
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
|
||||
SYM_FUNC_START(__fentry__)
|
||||
retq
|
||||
RET
|
||||
SYM_FUNC_END(__fentry__)
|
||||
EXPORT_SYMBOL(__fentry__)
|
||||
|
||||
@@ -170,10 +170,10 @@ SYM_INNER_LABEL(ftrace_graph_call, SYM_L_GLOBAL)
|
||||
|
||||
/*
|
||||
* This is weak to keep gas from relaxing the jumps.
|
||||
* It is also used to copy the retq for trampolines.
|
||||
* It is also used to copy the RET for trampolines.
|
||||
*/
|
||||
SYM_INNER_LABEL_ALIGN(ftrace_stub, SYM_L_WEAK)
|
||||
retq
|
||||
RET
|
||||
SYM_FUNC_END(ftrace_epilogue)
|
||||
|
||||
SYM_FUNC_START(ftrace_regs_caller)
|
||||
@@ -287,7 +287,7 @@ fgraph_trace:
|
||||
#endif
|
||||
|
||||
SYM_INNER_LABEL(ftrace_stub, SYM_L_GLOBAL)
|
||||
retq
|
||||
RET
|
||||
|
||||
trace:
|
||||
/* save_mcount_regs fills in first two parameters */
|
||||
@@ -319,7 +319,7 @@ SYM_FUNC_START(ftrace_graph_caller)
|
||||
|
||||
restore_mcount_regs
|
||||
|
||||
retq
|
||||
RET
|
||||
SYM_FUNC_END(ftrace_graph_caller)
|
||||
|
||||
SYM_CODE_START(return_to_handler)
|
||||
|
@@ -354,7 +354,7 @@ setup_once:
|
||||
#endif
|
||||
|
||||
andl $0,setup_once_ref /* Once is enough, thanks */
|
||||
ret
|
||||
RET
|
||||
|
||||
SYM_FUNC_START(early_idt_handler_array)
|
||||
# 36(%esp) %eflags
|
||||
|
@@ -10,7 +10,7 @@
|
||||
SYM_FUNC_START(native_save_fl)
|
||||
pushf
|
||||
pop %_ASM_AX
|
||||
ret
|
||||
RET
|
||||
SYM_FUNC_END(native_save_fl)
|
||||
EXPORT_SYMBOL(native_save_fl)
|
||||
|
||||
@@ -21,6 +21,6 @@ EXPORT_SYMBOL(native_save_fl)
|
||||
SYM_FUNC_START(native_restore_fl)
|
||||
push %_ASM_ARG1
|
||||
popf
|
||||
ret
|
||||
RET
|
||||
SYM_FUNC_END(native_restore_fl)
|
||||
EXPORT_SYMBOL(native_restore_fl)
|
||||
|
@@ -91,7 +91,7 @@ SYM_CODE_START_NOALIGN(relocate_kernel)
|
||||
movl %edi, %eax
|
||||
addl $(identity_mapped - relocate_kernel), %eax
|
||||
pushl %eax
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(relocate_kernel)
|
||||
|
||||
SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
|
||||
@@ -159,7 +159,7 @@ SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
|
||||
xorl %edx, %edx
|
||||
xorl %esi, %esi
|
||||
xorl %ebp, %ebp
|
||||
ret
|
||||
RET
|
||||
1:
|
||||
popl %edx
|
||||
movl CP_PA_SWAP_PAGE(%edi), %esp
|
||||
@@ -190,7 +190,7 @@ SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
|
||||
movl %edi, %eax
|
||||
addl $(virtual_mapped - relocate_kernel), %eax
|
||||
pushl %eax
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(identity_mapped)
|
||||
|
||||
SYM_CODE_START_LOCAL_NOALIGN(virtual_mapped)
|
||||
@@ -208,7 +208,7 @@ SYM_CODE_START_LOCAL_NOALIGN(virtual_mapped)
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(virtual_mapped)
|
||||
|
||||
/* Do the copies */
|
||||
@@ -271,7 +271,7 @@ SYM_CODE_START_LOCAL_NOALIGN(swap_pages)
|
||||
popl %edi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(swap_pages)
|
||||
|
||||
.globl kexec_control_code_size
|
||||
|
@@ -104,7 +104,7 @@ SYM_CODE_START_NOALIGN(relocate_kernel)
|
||||
/* jump to identity mapped page */
|
||||
addq $(identity_mapped - relocate_kernel), %r8
|
||||
pushq %r8
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(relocate_kernel)
|
||||
|
||||
SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
|
||||
@@ -191,7 +191,7 @@ SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
|
||||
xorl %r14d, %r14d
|
||||
xorl %r15d, %r15d
|
||||
|
||||
ret
|
||||
RET
|
||||
|
||||
1:
|
||||
popq %rdx
|
||||
@@ -210,7 +210,7 @@ SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
|
||||
call swap_pages
|
||||
movq $virtual_mapped, %rax
|
||||
pushq %rax
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(identity_mapped)
|
||||
|
||||
SYM_CODE_START_LOCAL_NOALIGN(virtual_mapped)
|
||||
@@ -231,7 +231,7 @@ SYM_CODE_START_LOCAL_NOALIGN(virtual_mapped)
|
||||
popq %r12
|
||||
popq %rbp
|
||||
popq %rbx
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(virtual_mapped)
|
||||
|
||||
/* Do the copies */
|
||||
@@ -288,7 +288,7 @@ SYM_CODE_START_LOCAL_NOALIGN(swap_pages)
|
||||
lea PAGE_SIZE(%rax), %rsi
|
||||
jmp 0b
|
||||
3:
|
||||
ret
|
||||
RET
|
||||
SYM_CODE_END(swap_pages)
|
||||
|
||||
.globl kexec_control_code_size
|
||||
|
@@ -85,5 +85,5 @@ SYM_FUNC_START(sev_verify_cbit)
|
||||
#endif
|
||||
/* Return page-table pointer */
|
||||
movq %rdi, %rax
|
||||
ret
|
||||
RET
|
||||
SYM_FUNC_END(sev_verify_cbit)
|
||||
|
@@ -132,9 +132,9 @@ SYM_FUNC_START_LOCAL(verify_cpu)
|
||||
.Lverify_cpu_no_longmode:
|
||||
popf # Restore caller passed flags
|
||||
movl $1,%eax
|
||||
ret
|
||||
RET
|
||||
.Lverify_cpu_sse_ok:
|
||||
popf # Restore caller passed flags
|
||||
xorl %eax, %eax
|
||||
ret
|
||||
RET
|
||||
SYM_FUNC_END(verify_cpu)
|
||||
|
Referência em uma nova issue
Block a user