From: Feng Yang <[email protected]>

Calling bpf_lwt_xmit_push_encap will not cause a crash when dst is missing.

Signed-off-by: Feng Yang <[email protected]>
---
 .../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


Reply via email to