// SPDX-License-Identifier: GPL-2.0

#include "vmlinux.h"
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>

char _license[] SEC("license") = "GPL";

#ifndef EBUSY
#define EBUSY 16
#endif

extern bool CONFIG_PREEMPT __kconfig __weak;
int nr_get_errs = 0;
int nr_del_errs = 0;

struct {
	__uint(type, BPF_MAP_TYPE_TASK_STORAGE);
	__uint(map_flags, BPF_F_NO_PREALLOC);
	__type(key, int);
	__type(value, int);
} task_storage SEC(".maps");

SEC("lsm.s/socket_post_create")
int BPF_PROG(socket_post_create, struct socket *sock, int family, int type,
	     int protocol, int kern)
{
	struct task_struct *task;
	int ret, zero = 0;
	int *value;

	if (!CONFIG_PREEMPT)
		return 0;

	task = bpf_get_current_task_btf();
	value = bpf_task_storage_get(&task_storage, task, &zero,
				     BPF_LOCAL_STORAGE_GET_F_CREATE);
	if (!value)
		__sync_fetch_and_add(&nr_get_errs, 1);

	ret = bpf_task_storage_delete(&task_storage,
				      bpf_get_current_task_btf());
	if (ret == -EBUSY)
		__sync_fetch_and_add(&nr_del_errs, 1);

	return 0;
}
