[PATCH v8 bpf-next 2/2] selftests/bpf: Add selftests for the invocation of bpf_lwt_xmit_push_encap
From: Feng Yang
Date: Fri Feb 27 2026 - 03:29:43 EST
From: Feng Yang <yangfeng@xxxxxxxxxx>
Calling bpf_lwt_xmit_push_encap will not cause a crash when dst is missing.
Signed-off-by: Feng Yang <yangfeng@xxxxxxxxxx>
---
.../selftests/bpf/progs/verifier_lwt.c | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/tools/testing/selftests/bpf/progs/verifier_lwt.c b/tools/testing/selftests/bpf/progs/verifier_lwt.c
index 5ab746307309..9cef07e6eceb 100644
--- a/tools/testing/selftests/bpf/progs/verifier_lwt.c
+++ b/tools/testing/selftests/bpf/progs/verifier_lwt.c
@@ -231,4 +231,24 @@ __naked void not_permitted_for_lwt_prog(void)
: __clobber_all);
}
+SEC("lwt_xmit")
+__description("missing dst when calling bpf_lwt_xmit_push_encap")
+__success __retval(0)
+__naked void missing_dst_call_bpf_lwt_xmit_push_encap(void)
+{
+ asm volatile (" \
+ r9 = 69; \
+ r3 = r10; \
+ r3 += -32; \
+ *(u64 *)(r3 + 0) = r9; \
+ r2 = 2; \
+ r4 = 20; \
+ call %[bpf_lwt_push_encap]; \
+ r0 = 0; \
+ exit; \
+" :
+ : __imm(bpf_lwt_push_encap)
+ : __clobber_all);
+}
+
char _license[] SEC("license") = "GPL";
--
2.43.0