diff --git a/GPL/Events/Helpers.h b/GPL/Events/Helpers.h index 92e5df5b..3844f06e 100644 --- a/GPL/Events/Helpers.h +++ b/GPL/Events/Helpers.h @@ -113,6 +113,7 @@ const volatile int consumer_pid = 0; ret; \ }) +// value is replaced later by `probe_fill_relos()` #define DECL_FUNC_RET(func) const volatile int ret__##func##__ = 0; #define FUNC_RET_READ(type, func) \ ({ \ diff --git a/GPL/Events/Network/Probe.bpf.c b/GPL/Events/Network/Probe.bpf.c index c6c61c48..6a7f43b0 100644 --- a/GPL/Events/Network/Probe.bpf.c +++ b/GPL/Events/Network/Probe.bpf.c @@ -18,6 +18,8 @@ #include "Network.h" #include "State.h" +DECL_FUNC_RET(inet_csk_accept); + static int inet_csk_accept__exit(struct sock *sk) { if (!sk) @@ -42,9 +44,9 @@ static int inet_csk_accept__exit(struct sock *sk) } SEC("fexit/inet_csk_accept") -int BPF_PROG( - fexit__inet_csk_accept, struct sock *sk, int flags, int *err, bool kern, struct sock *ret) +int BPF_PROG(fexit__inet_csk_accept) { + struct sock *ret = FUNC_RET_READ(___type(ret), inet_csk_accept); return inet_csk_accept__exit(ret); } diff --git a/non-GPL/Events/Lib/EbpfEvents.c b/non-GPL/Events/Lib/EbpfEvents.c index ebd1fe4b..de456775 100644 --- a/non-GPL/Events/Lib/EbpfEvents.c +++ b/non-GPL/Events/Lib/EbpfEvents.c @@ -268,6 +268,8 @@ static int probe_fill_relos(struct btf *btf, struct EventProbe_bpf *obj) { int err = 0; + err = err ?: FILL_FUNC_RET_IDX(obj, btf, inet_csk_accept); + err = err ?: FILL_FUNC_ARG_IDX(obj, btf, vfs_unlink, dentry); err = err ?: FILL_FUNC_RET_IDX(obj, btf, vfs_unlink);