brintos

brintos / linux-shallow public Read only

0
0
Text · 912 B · 2beab9c Raw
50 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/* 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#define MAX_STACK (512 - 3 * 32)9 10static __attribute__ ((noinline))11int f0(int var, struct __sk_buff *skb)12{13	return skb->len;14}15 16__attribute__ ((noinline))17int f1(struct __sk_buff *skb)18{19	volatile char buf[MAX_STACK] = {};20 21	__sink(buf[MAX_STACK - 1]);22 23	return f0(0, skb) + skb->len;24}25 26int f3(int, struct __sk_buff *skb, int);27 28__attribute__ ((noinline))29int f2(int val, struct __sk_buff *skb)30{31	return f1(skb) + f3(val, skb, 1);32}33 34__attribute__ ((noinline))35int f3(int val, struct __sk_buff *skb, int var)36{37	volatile char buf[MAX_STACK] = {};38 39	__sink(buf[MAX_STACK - 1]);40 41	return skb->ifindex * val * var;42}43 44SEC("tc")45__success46int global_func2(struct __sk_buff *skb)47{48	return f0(1, skb) + f1(skb) + f2(2, skb) + f3(3, skb, 4);49}50