diff options
| author | David S. Miller <davem@davemloft.net> | 2020-01-23 08:10:16 +0100 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2020-01-23 08:10:16 +0100 |
| commit | 954b3c4397792c8614aa4aaf25030ae87ece8307 (patch) | |
| tree | b2648c3d97fe2332863d7baac069c23cab0addc4 /tools/testing/selftests/bpf/progs/test_global_func6.c | |
| parent | c5d19a6ecfce72d0352191d75f03eea4748a8c45 (diff) | |
| parent | 85cc12f85138f2ce3edf24833edd2179690306db (diff) | |
| download | talos-op-linux-954b3c4397792c8614aa4aaf25030ae87ece8307.tar.gz talos-op-linux-954b3c4397792c8614aa4aaf25030ae87ece8307.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
Alexei Starovoitov says:
====================
pull-request: bpf-next 2020-01-22
The following pull-request contains BPF updates for your *net-next* tree.
We've added 92 non-merge commits during the last 16 day(s) which contain
a total of 320 files changed, 7532 insertions(+), 1448 deletions(-).
The main changes are:
1) function by function verification and program extensions from Alexei.
2) massive cleanup of selftests/bpf from Toke and Andrii.
3) batched bpf map operations from Brian and Yonghong.
4) tcp congestion control in bpf from Martin.
5) bulking for non-map xdp_redirect form Toke.
6) bpf_send_signal_thread helper from Yonghong.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/testing/selftests/bpf/progs/test_global_func6.c')
| -rw-r--r-- | tools/testing/selftests/bpf/progs/test_global_func6.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/test_global_func6.c b/tools/testing/selftests/bpf/progs/test_global_func6.c new file mode 100644 index 000000000000..69e19c64e10b --- /dev/null +++ b/tools/testing/selftests/bpf/progs/test_global_func6.c @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2020 Facebook */ +#include <stddef.h> +#include <linux/bpf.h> +#include <bpf/bpf_helpers.h> + +__attribute__ ((noinline)) +int f1(struct __sk_buff *skb) +{ + return skb->len; +} + +int f3(int, struct __sk_buff *skb); + +__attribute__ ((noinline)) +int f2(int val, struct __sk_buff *skb) +{ + return f1(skb) + f3(val, skb + 1); /* type mismatch */ +} + +__attribute__ ((noinline)) +int f3(int val, struct __sk_buff *skb) +{ + return skb->ifindex * val; +} + +SEC("classifier/test") +int test_cls(struct __sk_buff *skb) +{ + return f1(skb) + f2(2, skb) + f3(3, skb); +} |

