Linux Audio

Check our new training course

Loading...
v6.13.7
 1// SPDX-License-Identifier: GPL-2.0-only
 2/* Copyright (c) 2020 Facebook */
 3#include <stddef.h>
 4#include <linux/bpf.h>
 5#include <bpf/bpf_helpers.h>
 6#include "bpf_misc.h"
 7
 8__attribute__ ((noinline))
 9int f1(struct __sk_buff *skb)
10{
11	return skb->len;
12}
13
14__attribute__ ((noinline))
15int f2(int val, struct __sk_buff *skb)
16{
17	return f1(skb) + val;
18}
19
20__attribute__ ((noinline))
21int f3(int val, struct __sk_buff *skb, int var)
22{
23	return f2(var, skb) + val;
24}
25
26__attribute__ ((noinline))
27int f4(struct __sk_buff *skb)
28{
29	return f3(1, skb, 2);
30}
31
32__attribute__ ((noinline))
33int f5(struct __sk_buff *skb)
34{
35	return f4(skb);
36}
37
38__attribute__ ((noinline))
39int f6(struct __sk_buff *skb)
40{
41	return f5(skb);
42}
43
44__attribute__ ((noinline))
45int f7(struct __sk_buff *skb)
46{
47	return f6(skb);
48}
49
 
50__attribute__ ((noinline))
51int f8(struct __sk_buff *skb)
52{
53	return f7(skb);
54}
 
55
56SEC("tc")
57__failure __msg("the call stack of 8 frames")
58int global_func3(struct __sk_buff *skb)
59{
 
60	return f8(skb);
 
 
 
61}
v5.9
 1// SPDX-License-Identifier: GPL-2.0-only
 2/* Copyright (c) 2020 Facebook */
 3#include <stddef.h>
 4#include <linux/bpf.h>
 5#include <bpf/bpf_helpers.h>
 
 6
 7__attribute__ ((noinline))
 8int f1(struct __sk_buff *skb)
 9{
10	return skb->len;
11}
12
13__attribute__ ((noinline))
14int f2(int val, struct __sk_buff *skb)
15{
16	return f1(skb) + val;
17}
18
19__attribute__ ((noinline))
20int f3(int val, struct __sk_buff *skb, int var)
21{
22	return f2(var, skb) + val;
23}
24
25__attribute__ ((noinline))
26int f4(struct __sk_buff *skb)
27{
28	return f3(1, skb, 2);
29}
30
31__attribute__ ((noinline))
32int f5(struct __sk_buff *skb)
33{
34	return f4(skb);
35}
36
37__attribute__ ((noinline))
38int f6(struct __sk_buff *skb)
39{
40	return f5(skb);
41}
42
43__attribute__ ((noinline))
44int f7(struct __sk_buff *skb)
45{
46	return f6(skb);
47}
48
49#ifndef NO_FN8
50__attribute__ ((noinline))
51int f8(struct __sk_buff *skb)
52{
53	return f7(skb);
54}
55#endif
56
57SEC("classifier/test")
58int test_cls(struct __sk_buff *skb)
 
59{
60#ifndef NO_FN8
61	return f8(skb);
62#else
63	return f7(skb);
64#endif
65}