浏览代码

Merge tag 'linux-kselftest-4.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest

Shuah writes:
  "kselftest fixes for 4.19-rc7

   This fixes update for 4.19-rc7 consists one fix to rseq test to
   prevent it from seg-faulting when compiled with -fpie."

* tag 'linux-kselftest-4.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
  rseq/selftests: fix parametrized test with -fpie
Greg Kroah-Hartman 7 年之前
父节点
当前提交
95773dc086
共有 1 个文件被更改,包括 10 次插入9 次删除
  1. 10 9
      tools/testing/selftests/rseq/param_test.c

+ 10 - 9
tools/testing/selftests/rseq/param_test.c

@@ -56,15 +56,13 @@ unsigned int yield_mod_cnt, nr_abort;
 			printf(fmt, ## __VA_ARGS__);	\
 			printf(fmt, ## __VA_ARGS__);	\
 	} while (0)
 	} while (0)
 
 
-#if defined(__x86_64__) || defined(__i386__)
+#ifdef __i386__
 
 
 #define INJECT_ASM_REG	"eax"
 #define INJECT_ASM_REG	"eax"
 
 
 #define RSEQ_INJECT_CLOBBER \
 #define RSEQ_INJECT_CLOBBER \
 	, INJECT_ASM_REG
 	, INJECT_ASM_REG
 
 
-#ifdef __i386__
-
 #define RSEQ_INJECT_ASM(n) \
 #define RSEQ_INJECT_ASM(n) \
 	"mov asm_loop_cnt_" #n ", %%" INJECT_ASM_REG "\n\t" \
 	"mov asm_loop_cnt_" #n ", %%" INJECT_ASM_REG "\n\t" \
 	"test %%" INJECT_ASM_REG ",%%" INJECT_ASM_REG "\n\t" \
 	"test %%" INJECT_ASM_REG ",%%" INJECT_ASM_REG "\n\t" \
@@ -76,9 +74,16 @@ unsigned int yield_mod_cnt, nr_abort;
 
 
 #elif defined(__x86_64__)
 #elif defined(__x86_64__)
 
 
+#define INJECT_ASM_REG_P	"rax"
+#define INJECT_ASM_REG		"eax"
+
+#define RSEQ_INJECT_CLOBBER \
+	, INJECT_ASM_REG_P \
+	, INJECT_ASM_REG
+
 #define RSEQ_INJECT_ASM(n) \
 #define RSEQ_INJECT_ASM(n) \
-	"lea asm_loop_cnt_" #n "(%%rip), %%" INJECT_ASM_REG "\n\t" \
-	"mov (%%" INJECT_ASM_REG "), %%" INJECT_ASM_REG "\n\t" \
+	"lea asm_loop_cnt_" #n "(%%rip), %%" INJECT_ASM_REG_P "\n\t" \
+	"mov (%%" INJECT_ASM_REG_P "), %%" INJECT_ASM_REG "\n\t" \
 	"test %%" INJECT_ASM_REG ",%%" INJECT_ASM_REG "\n\t" \
 	"test %%" INJECT_ASM_REG ",%%" INJECT_ASM_REG "\n\t" \
 	"jz 333f\n\t" \
 	"jz 333f\n\t" \
 	"222:\n\t" \
 	"222:\n\t" \
@@ -86,10 +91,6 @@ unsigned int yield_mod_cnt, nr_abort;
 	"jnz 222b\n\t" \
 	"jnz 222b\n\t" \
 	"333:\n\t"
 	"333:\n\t"
 
 
-#else
-#error "Unsupported architecture"
-#endif
-
 #elif defined(__s390__)
 #elif defined(__s390__)
 
 
 #define RSEQ_INJECT_INPUT \
 #define RSEQ_INJECT_INPUT \