cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

test_global_func1.c (845B)


      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#ifndef MAX_STACK
      8#define MAX_STACK (512 - 3 * 32 + 8)
      9#endif
     10
     11static __attribute__ ((noinline))
     12int f0(int var, struct __sk_buff *skb)
     13{
     14	return skb->len;
     15}
     16
     17__attribute__ ((noinline))
     18int f1(struct __sk_buff *skb)
     19{
     20	volatile char buf[MAX_STACK] = {};
     21
     22	return f0(0, skb) + skb->len;
     23}
     24
     25int f3(int, struct __sk_buff *skb, int);
     26
     27__attribute__ ((noinline))
     28int f2(int val, struct __sk_buff *skb)
     29{
     30	return f1(skb) + f3(val, skb, 1);
     31}
     32
     33__attribute__ ((noinline))
     34int f3(int val, struct __sk_buff *skb, int var)
     35{
     36	volatile char buf[MAX_STACK] = {};
     37
     38	return skb->ifindex * val * var;
     39}
     40
     41SEC("tc")
     42int test_cls(struct __sk_buff *skb)
     43{
     44	return f0(1, skb) + f1(skb) + f2(2, skb) + f3(3, skb, 4);
     45}