selftests/bpf: match both retq/rethunk in verifier_tailcall_jit
authorEduard Zingerman <eddyz87@gmail.com>
Fri, 23 Aug 2024 08:06:43 +0000 (01:06 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 23 Aug 2024 14:29:02 +0000 (07:29 -0700)
Depending on kernel parameters, x86 jit generates either retq or jump
to rethunk for 'exit' instruction. The difference could be seen when
kernel is booted with and without mitigations=off parameter.
Relax the verifier_tailcall_jit test case to match both variants.

Fixes: e5bdd6a8be78 ("selftests/bpf: validate jit behaviour for tail calls")
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20240823080644.263943-3-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/verifier_tailcall_jit.c

index 06d327c..8d60c63 100644 (file)
@@ -59,7 +59,7 @@ __jited("     movq    -0x10(%rbp), %rax")
 __jited("      callq   0x{{.*}}")              /* call to sub()          */
 __jited("      xorl    %eax, %eax")
 __jited("      leave")
-__jited("      retq")
+__jited("      {{(retq|jmp     0x)}}")         /* return or jump to rethunk */
 __jited("...")
 /* subprogram entry for sub(), regular function prologue */
 __jited("      endbr64")
@@ -89,7 +89,7 @@ __jited("     popq    %rax")
 __jited("      popq    %rax")
 __jited("      jmp     {{.*}}")                /* jump to tail call tgt   */
 __jited("L0:   leave")
-__jited("      retq")
+__jited("      {{(retq|jmp     0x)}}")         /* return or jump to rethunk */
 SEC("tc")
 __naked int main(void)
 {