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

freplace_attach_probe.c (768B)


      1// SPDX-License-Identifier: GPL-2.0
      2// Copyright (c) 2020 Facebook
      3
      4#include <linux/ptrace.h>
      5#include <linux/bpf.h>
      6#include <bpf/bpf_helpers.h>
      7#include <bpf/bpf_tracing.h>
      8
      9#define VAR_NUM 2
     10
     11struct hmap_elem {
     12	struct bpf_spin_lock lock;
     13	int var[VAR_NUM];
     14};
     15
     16struct {
     17	__uint(type, BPF_MAP_TYPE_HASH);
     18	__uint(max_entries, 1);
     19	__type(key, __u32);
     20	__type(value, struct hmap_elem);
     21} hash_map SEC(".maps");
     22
     23SEC("freplace/handle_kprobe")
     24int new_handle_kprobe(struct pt_regs *ctx)
     25{
     26	struct hmap_elem zero = {}, *val;
     27	int key = 0;
     28
     29	val = bpf_map_lookup_elem(&hash_map, &key);
     30	if (!val)
     31		return 1;
     32	/* spin_lock in hash map */
     33	bpf_spin_lock(&val->lock);
     34	val->var[0] = 99;
     35	bpf_spin_unlock(&val->lock);
     36
     37	return 0;
     38}
     39
     40char _license[] SEC("license") = "GPL";