Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de2ff888 authored by Borislav Petkov's avatar Borislav Petkov
Browse files

x86/lib/copy_user_64.S: Convert to ALTERNATIVE_2



Use the asm macro and drop the locally grown version.

Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
parent 090a3f61
Loading
Loading
Loading
Loading
+10 −30
Original line number Diff line number Diff line
@@ -16,30 +16,6 @@
#include <asm/asm.h>
#include <asm/smap.h>

/*
 * By placing feature2 after feature1 in altinstructions section, we logically
 * implement:
 * If CPU has feature2, jmp to alt2 is used
 * else if CPU has feature1, jmp to alt1 is used
 * else jmp to orig is used.
 */
	.macro ALTERNATIVE_JUMP feature1,feature2,orig,alt1,alt2
0:
	jmp \orig
1:
	.section .altinstr_replacement,"ax"
2:
	jmp \alt1
3:
	jmp \alt2
	.previous

	.section .altinstructions,"a"
	altinstruction_entry 0b,2b,\feature1,5,5,0
	altinstruction_entry 0b,3b,\feature2,5,5,0
	.previous
	.endm

	.macro ALIGN_DESTINATION
	/* check for bad alignment of destination */
	movl %edi,%ecx
@@ -73,9 +49,11 @@ ENTRY(_copy_to_user)
	jc bad_to_user
	cmpq TI_addr_limit(%rax),%rcx
	ja bad_to_user
	ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,X86_FEATURE_ERMS,	\
		copy_user_generic_unrolled,copy_user_generic_string,	\
		copy_user_enhanced_fast_string
	ALTERNATIVE_2 "jmp copy_user_generic_unrolled",		\
		      "jmp copy_user_generic_string",		\
		      X86_FEATURE_REP_GOOD,			\
		      "jmp copy_user_enhanced_fast_string",	\
		      X86_FEATURE_ERMS
	CFI_ENDPROC
ENDPROC(_copy_to_user)

@@ -88,9 +66,11 @@ ENTRY(_copy_from_user)
	jc bad_from_user
	cmpq TI_addr_limit(%rax),%rcx
	ja bad_from_user
	ALTERNATIVE_JUMP X86_FEATURE_REP_GOOD,X86_FEATURE_ERMS,	\
		copy_user_generic_unrolled,copy_user_generic_string,	\
		copy_user_enhanced_fast_string
	ALTERNATIVE_2 "jmp copy_user_generic_unrolled",		\
		      "jmp copy_user_generic_string",		\
		      X86_FEATURE_REP_GOOD,			\
		      "jmp copy_user_enhanced_fast_string",	\
		      X86_FEATURE_ERMS
	CFI_ENDPROC
ENDPROC(_copy_from_user)