s390/nospec: align and size extern thunks
authorVasily Gorbik <gor@linux.ibm.com>
Sun, 6 Mar 2022 21:30:42 +0000 (22:30 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Thu, 10 Mar 2022 14:58:17 +0000 (15:58 +0100)
Kernel has full control over how extern thunks generated by
arch/s390/lib/expoline.S look like. Align them to 16 bytes like other
symbols. Also set proper symbols size which is important for tooling.

Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Acked-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/nospec-insn.h

index bbb5c4d..c670c1d 100644 (file)
@@ -20,6 +20,7 @@ _LC_BR_R1 = __LC_BR_R1
        .macro __THUNK_PROLOG_NAME name
 #ifdef CONFIG_EXPOLINE_EXTERN
        .pushsection .text,"ax",@progbits
+       .align 16,0x07
 #else
        .pushsection .text.\name,"axG",@progbits,\name,comdat
 #endif
@@ -30,8 +31,11 @@ _LC_BR_R1 = __LC_BR_R1
        CFI_STARTPROC
        .endm
 
-       .macro __THUNK_EPILOG
+       .macro __THUNK_EPILOG_NAME name
        CFI_ENDPROC
+#ifdef CONFIG_EXPOLINE_EXTERN
+       .size \name, .-\name
+#endif
        .popsection
        .endm
 
@@ -40,6 +44,10 @@ _LC_BR_R1 = __LC_BR_R1
        __THUNK_PROLOG_NAME __s390_indirect_jump_r\r1
        .endm
 
+       .macro __THUNK_EPILOG_BR r1,r2
+       __THUNK_EPILOG_NAME __s390_indirect_jump_r\r1
+       .endm
+
        .macro __THUNK_BR r1,r2
        jg      __s390_indirect_jump_r\r1
        .endm
@@ -52,6 +60,10 @@ _LC_BR_R1 = __LC_BR_R1
        __THUNK_PROLOG_NAME __s390_indirect_jump_r\r2\()use_r\r1
        .endm
 
+       .macro __THUNK_EPILOG_BR r1,r2
+       __THUNK_EPILOG_NAME __s390_indirect_jump_r\r2\()use_r\r1
+       .endm
+
        .macro __THUNK_BR r1,r2
        jg      __s390_indirect_jump_r\r2\()use_r\r1
        .endm
@@ -128,7 +140,7 @@ _LC_BR_R1 = __LC_BR_R1
 #endif
        __DECODE_RR __THUNK_PROLOG_BR,\reg,\ruse
        __THUNK_EX_BR \reg,\ruse
-       __THUNK_EPILOG
+       __DECODE_RR __THUNK_EPILOG_BR,\reg,\ruse
        .endm
 
        .macro BR_EX reg,ruse=%r1