From: Alexei Starovoitov <ast@kernel.org> To: <davem@davemloft.net> Cc: <daniel@iogearbox.net>, <x86@kernel.org>, <netdev@vger.kernel.org>, <bpf@vger.kernel.org>, <kernel-team@fb.com> Subject: [PATCH v3 bpf-next 17/18] selftests/bpf: Extend test_pkt_access test Date: Thu, 7 Nov 2019 22:40:38 -0800 Message-ID: <20191108064039.2041889-18-ast@kernel.org> (raw) In-Reply-To: <20191108064039.2041889-1-ast@kernel.org> The test_pkt_access.o is used by multiple tests. Fix its section name so that program type can be automatically detected by libbpf and make it call other subprograms with skb argument. Signed-off-by: Alexei Starovoitov <ast@kernel.org> --- .../selftests/bpf/progs/test_pkt_access.c | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/test_pkt_access.c b/tools/testing/selftests/bpf/progs/test_pkt_access.c index 7cf42d14103f..3a7b4b607ed3 100644 --- a/tools/testing/selftests/bpf/progs/test_pkt_access.c +++ b/tools/testing/selftests/bpf/progs/test_pkt_access.c @@ -17,8 +17,38 @@ #define barrier() __asm__ __volatile__("": : :"memory") int _version SEC("version") = 1; -SEC("test1") -int process(struct __sk_buff *skb) +/* llvm will optimize both subprograms into exactly the same BPF assembly + * + * Disassembly of section .text: + * + * 0000000000000000 test_pkt_access_subprog1: + * ; return skb->len * 2; + * 0: 61 10 00 00 00 00 00 00 r0 = *(u32 *)(r1 + 0) + * 1: 64 00 00 00 01 00 00 00 w0 <<= 1 + * 2: 95 00 00 00 00 00 00 00 exit + * + * 0000000000000018 test_pkt_access_subprog2: + * ; return skb->len * val; + * 3: 61 10 00 00 00 00 00 00 r0 = *(u32 *)(r1 + 0) + * 4: 64 00 00 00 01 00 00 00 w0 <<= 1 + * 5: 95 00 00 00 00 00 00 00 exit + * + * Which makes it an interesting test for BTF-enabled verifier. + */ +static __attribute__ ((noinline)) +int test_pkt_access_subprog1(volatile struct __sk_buff *skb) +{ + return skb->len * 2; +} + +static __attribute__ ((noinline)) +int test_pkt_access_subprog2(int val, volatile struct __sk_buff *skb) +{ + return skb->len * val; +} + +SEC("classifier/test_pkt_access") +int test_pkt_access(struct __sk_buff *skb) { void *data_end = (void *)(long)skb->data_end; void *data = (void *)(long)skb->data; @@ -48,6 +78,10 @@ int process(struct __sk_buff *skb) tcp = (struct tcphdr *)((void *)(ip6h) + ihl_len); } + if (test_pkt_access_subprog1(skb) != skb->len * 2) + return TC_ACT_SHOT; + if (test_pkt_access_subprog2(2, skb) != skb->len * 2) + return TC_ACT_SHOT; if (tcp) { if (((void *)(tcp) + 20) > data_end || proto != 6) return TC_ACT_SHOT; -- 2.23.0
next prev parent reply index Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-08 6:40 [PATCH v3 bpf-next 00/18] Introduce BPF trampoline Alexei Starovoitov 2019-11-08 6:40 ` [PATCH v3 bpf-next 01/18] bpf: refactor x86 JIT into helpers Alexei Starovoitov 2019-11-08 19:27 ` Andrii Nakryiko 2019-11-08 6:40 ` [PATCH v3 bpf-next 02/18] bpf: Add bpf_arch_text_poke() helper Alexei Starovoitov 2019-11-08 6:56 ` Song Liu 2019-11-08 8:23 ` Björn Töpel 2019-11-08 14:09 ` Alexei Starovoitov 2019-11-08 9:11 ` Peter Zijlstra 2019-11-08 9:36 ` Peter Zijlstra 2019-11-08 13:41 ` Alexei Starovoitov 2019-11-08 19:32 ` Alexei Starovoitov 2019-11-08 21:36 ` Peter Zijlstra 2019-11-08 21:39 ` David Miller 2019-11-11 8:14 ` Peter Zijlstra 2019-11-11 10:21 ` Daniel Borkmann 2019-11-11 16:10 ` Jonathan Corbet 2019-11-08 23:05 ` Alexei Starovoitov 2019-11-10 10:54 ` Thomas Gleixner 2019-11-08 6:40 ` [PATCH v3 bpf-next 03/18] bpf: Introduce BPF trampoline Alexei Starovoitov 2019-11-08 7:04 ` Song Liu 2019-11-08 6:40 ` [PATCH v3 bpf-next 04/18] libbpf: Introduce btf__find_by_name_kind() Alexei Starovoitov 2019-11-08 7:05 ` Song Liu 2019-11-08 19:21 ` Andrii Nakryiko 2019-11-08 6:40 ` [PATCH v3 bpf-next 05/18] libbpf: Add support to attach to fentry/fexit tracing progs Alexei Starovoitov 2019-11-08 7:12 ` Song Liu 2019-11-08 19:44 ` Andrii Nakryiko 2019-11-08 6:40 ` [PATCH v3 bpf-next 06/18] selftest/bpf: Simple test for fentry/fexit Alexei Starovoitov 2019-11-08 6:40 ` [PATCH v3 bpf-next 07/18] bpf: Add kernel test functions for fentry testing Alexei Starovoitov 2019-11-08 6:40 ` [PATCH v3 bpf-next 08/18] selftests/bpf: Add test for BPF trampoline Alexei Starovoitov 2019-11-08 6:40 ` [PATCH v3 bpf-next 09/18] selftests/bpf: Add fexit tests " Alexei Starovoitov 2019-11-08 6:40 ` [PATCH v3 bpf-next 10/18] selftests/bpf: Add combined fentry/fexit test Alexei Starovoitov 2019-11-08 7:14 ` Song Liu 2019-11-08 6:40 ` [PATCH v3 bpf-next 11/18] selftests/bpf: Add stress test for maximum number of progs Alexei Starovoitov 2019-11-08 7:24 ` Song Liu 2019-11-08 6:40 ` [PATCH v3 bpf-next 12/18] bpf: Reserve space for BPF trampoline in BPF programs Alexei Starovoitov 2019-11-08 7:25 ` Song Liu 2019-11-08 6:40 ` [PATCH v3 bpf-next 13/18] bpf: Fix race in btf_resolve_helper_id() Alexei Starovoitov 2019-11-08 7:32 ` Song Liu 2019-11-08 19:58 ` Andrii Nakryiko 2019-11-08 6:40 ` [PATCH v3 bpf-next 14/18] bpf: Compare BTF types of functions arguments with actual types Alexei Starovoitov 2019-11-08 17:28 ` Song Liu 2019-11-08 17:32 ` Song Liu 2019-11-08 17:57 ` Alexei Starovoitov 2019-11-08 17:59 ` Song Liu 2019-11-08 23:46 ` Andrii Nakryiko 2019-11-08 6:40 ` [PATCH v3 bpf-next 15/18] bpf: Support attaching tracing BPF program to other BPF programs Alexei Starovoitov 2019-11-08 18:49 ` Song Liu 2019-11-08 18:59 ` Alexei Starovoitov 2019-11-08 20:17 ` Toke Høiland-Jørgensen 2019-11-08 21:14 ` Alexei Starovoitov 2019-11-08 21:32 ` Toke Høiland-Jørgensen 2019-11-10 7:17 ` Andrii Nakryiko 2019-11-11 23:04 ` Alexei Starovoitov 2019-11-12 4:38 ` Andrii Nakryiko 2019-11-12 4:47 ` Alexei Starovoitov 2019-11-08 6:40 ` [PATCH v3 bpf-next 16/18] libbpf: Add support for attaching BPF programs " Alexei Starovoitov 2019-11-08 18:57 ` Song Liu 2019-11-08 19:13 ` Alexei Starovoitov 2019-11-08 19:14 ` Song Liu 2019-11-10 16:56 ` Andrii Nakryiko 2019-11-08 6:40 ` Alexei Starovoitov [this message] 2019-11-08 19:03 ` [PATCH v3 bpf-next 17/18] selftests/bpf: Extend test_pkt_access test Song Liu 2019-11-10 16:58 ` Andrii Nakryiko 2019-11-08 6:40 ` [PATCH v3 bpf-next 18/18] selftests/bpf: Add a test for attaching BPF prog to another BPF prog and subprog Alexei Starovoitov 2019-11-08 19:13 ` Song Liu 2019-11-10 17:04 ` Andrii Nakryiko 2019-11-11 23:07 ` Alexei Starovoitov
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20191108064039.2041889-18-ast@kernel.org \ --to=ast@kernel.org \ --cc=bpf@vger.kernel.org \ --cc=daniel@iogearbox.net \ --cc=davem@davemloft.net \ --cc=kernel-team@fb.com \ --cc=netdev@vger.kernel.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
BPF Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/bpf/0 bpf/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 bpf bpf/ https://lore.kernel.org/bpf \ bpf@vger.kernel.org public-inbox-index bpf Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.bpf AGPL code for this site: git clone https://public-inbox.org/public-inbox.git