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

tailcall_bpf2bpf1.c (692B)


      1// SPDX-License-Identifier: GPL-2.0
      2#include <linux/bpf.h>
      3#include <bpf/bpf_helpers.h>
      4
      5struct {
      6	__uint(type, BPF_MAP_TYPE_PROG_ARRAY);
      7	__uint(max_entries, 2);
      8	__uint(key_size, sizeof(__u32));
      9	__uint(value_size, sizeof(__u32));
     10} jmp_table SEC(".maps");
     11
     12#define TAIL_FUNC(x) 				\
     13	SEC("tc")				\
     14	int classifier_##x(struct __sk_buff *skb)	\
     15	{					\
     16		return x;			\
     17	}
     18TAIL_FUNC(0)
     19TAIL_FUNC(1)
     20
     21static __noinline
     22int subprog_tail(struct __sk_buff *skb)
     23{
     24	bpf_tail_call_static(skb, &jmp_table, 0);
     25
     26	return skb->len * 2;
     27}
     28
     29SEC("tc")
     30int entry(struct __sk_buff *skb)
     31{
     32	bpf_tail_call_static(skb, &jmp_table, 1);
     33
     34	return subprog_tail(skb);
     35}
     36
     37char __license[] SEC("license") = "GPL";