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} 62