162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/* Copyright (c) 2019 Facebook */
362306a36Sopenharmony_ci#include <stdbool.h>
462306a36Sopenharmony_ci#include <stddef.h>
562306a36Sopenharmony_ci#include <linux/bpf.h>
662306a36Sopenharmony_ci#include <linux/ptrace.h>
762306a36Sopenharmony_ci#include <bpf/bpf_helpers.h>
862306a36Sopenharmony_ci#include <bpf/bpf_tracing.h>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cistruct task_struct;
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciSEC("kprobe/__set_task_comm")
1362306a36Sopenharmony_ciint BPF_KPROBE(prog1, struct task_struct *tsk, const char *buf, bool exec)
1462306a36Sopenharmony_ci{
1562306a36Sopenharmony_ci	return !tsk;
1662306a36Sopenharmony_ci}
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciSEC("kretprobe/__set_task_comm")
1962306a36Sopenharmony_ciint BPF_KRETPROBE(prog2, int ret)
2062306a36Sopenharmony_ci{
2162306a36Sopenharmony_ci	return ret;
2262306a36Sopenharmony_ci}
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciSEC("raw_tp/task_rename")
2562306a36Sopenharmony_ciint prog3(struct bpf_raw_tracepoint_args *ctx)
2662306a36Sopenharmony_ci{
2762306a36Sopenharmony_ci	return !ctx->args[0];
2862306a36Sopenharmony_ci}
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciSEC("fentry/__set_task_comm")
3162306a36Sopenharmony_ciint BPF_PROG(prog4, struct task_struct *tsk, const char *buf, bool exec)
3262306a36Sopenharmony_ci{
3362306a36Sopenharmony_ci	return 0;
3462306a36Sopenharmony_ci}
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciSEC("fexit/__set_task_comm")
3762306a36Sopenharmony_ciint BPF_PROG(prog5, struct task_struct *tsk, const char *buf, bool exec)
3862306a36Sopenharmony_ci{
3962306a36Sopenharmony_ci	return 0;
4062306a36Sopenharmony_ci}
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_cichar _license[] SEC("license") = "GPL";
43