powerpc/64: indirect function call use bctrl rather than blrl in ret_from_kernel_thread
authorNicholas Piggin <npiggin@gmail.com>
Thu, 11 Jun 2020 12:11:19 +0000 (22:11 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 22 Jun 2020 00:37:55 +0000 (10:37 +1000)
blrl is not recommended to use as an indirect function call, as it may
corrupt the link stack predictor.

This is not a performance critical path but this should be fixed for
consistency.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200611121119.1015740-1-npiggin@gmail.com
arch/powerpc/kernel/entry_64.S

index 9d49338..1013adc 100644 (file)
@@ -233,12 +233,12 @@ _GLOBAL(ret_from_fork)
 _GLOBAL(ret_from_kernel_thread)
        bl      schedule_tail
        REST_NVGPRS(r1)
-       mtlr    r14
+       mtctr   r14
        mr      r3,r15
 #ifdef PPC64_ELF_ABI_v2
        mr      r12,r14
 #endif
-       blrl
+       bctrl
        li      r3,0
        b       .Lsyscall_exit