selftests/bpf: Test gotol with large offsets
authorIlya Leoshkevich <iii@linux.ibm.com>
Tue, 2 Jan 2024 19:30:37 +0000 (20:30 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 4 Jan 2024 22:37:25 +0000 (14:37 -0800)
Test gotol with offsets that don't fit into a short (i.e., larger than
32k or smaller than -32k).

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/r/20240102193531.3169422-4-iii@linux.ibm.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/verifier_gotol.c

index d1edbcff9a18589908d9e1654101507c6a096798..05a329ee45ee95c10b8a37db13e7794c1df38fdd 100644 (file)
@@ -33,6 +33,25 @@ l3_%=:                                                       \
        : __clobber_all);
 }
 
+SEC("socket")
+__description("gotol, large_imm")
+__success __failure_unpriv __retval(40000)
+__naked void gotol_large_imm(void)
+{
+       asm volatile ("                                 \
+       gotol 1f;                                       \
+0:                                                     \
+       r0 = 0;                                         \
+       .rept 40000;                                    \
+       r0 += 1;                                        \
+       .endr;                                          \
+       exit;                                           \
+1:     gotol 0b;                                       \
+"      :
+       :
+       : __clobber_all);
+}
+
 #else
 
 SEC("socket")