cregit-Linux how code gets into the kernel

Release 4.7 samples/bpf/tracex4_kern.c

Directory: samples/bpf
/* Copyright (c) 2015 PLUMgrid, http://plumgrid.com
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of version 2 of the GNU General Public
 * License as published by the Free Software Foundation.
 */
#include <linux/ptrace.h>
#include <linux/version.h>
#include <uapi/linux/bpf.h>
#include "bpf_helpers.h"


struct pair {
	
u64 val;
	
u64 ip;
};

struct bpf_map_def SEC("maps") my_map = {
	.type = BPF_MAP_TYPE_HASH,
	.key_size = sizeof(long),
	.value_size = sizeof(struct pair),
	.max_entries = 1000000,
};

/* kprobe is NOT a stable ABI. If kernel internals change this bpf+kprobe
 * example will no longer be meaningful
 */
SEC("kprobe/kmem_cache_free")

int bpf_prog1(struct pt_regs *ctx) { long ptr = PT_REGS_PARM2(ctx); bpf_map_delete_elem(&my_map, &ptr); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
alexei starovoitovalexei starovoitov2790.00%150.00%
michael holzheumichael holzheu310.00%150.00%
Total30100.00%2100.00%

SEC("kretprobe/kmem_cache_alloc_node")
int bpf_prog2(struct pt_regs *ctx) { long ptr = PT_REGS_RC(ctx); long ip = 0; /* get ip address of kmem_cache_alloc_node() caller */ BPF_KRETPROBE_READ_RET_IP(ip, ctx); struct pair v = { .val = bpf_ktime_get_ns(), .ip = ip, }; bpf_map_update_elem(&my_map, &ptr, &v, BPF_ANY); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
alexei starovoitovalexei starovoitov6092.31%133.33%
michael holzheumichael holzheu46.15%133.33%
naveen n. raonaveen n. rao11.54%133.33%
Total65100.00%3100.00%

char _license[] SEC("license") = "GPL"; u32 _version SEC("version") = LINUX_VERSION_CODE;

Overall Contributors

PersonTokensPropCommitsCommitProp
alexei starovoitovalexei starovoitov17695.65%133.33%
michael holzheumichael holzheu73.80%133.33%
naveen n. raonaveen n. rao10.54%133.33%
Total184100.00%3100.00%
Directory: samples/bpf
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}