return NULL;
}
-static struct ring_buffer* rb_free(struct ring_buffer *rb) {
- sym_ring_buffer__free(rb);
- return NULL;
-}
-
DEFINE_TRIVIAL_CLEANUP_FUNC(struct sysctl_monitor_bpf *, sysctl_monitor_bpf_free);
-DEFINE_TRIVIAL_CLEANUP_FUNC(struct ring_buffer *, rb_free);
static int sysctl_event_handler(void *ctx, void *data, size_t data_sz) {
struct sysctl_write_event *we = ASSERT_PTR(data);
int sysctl_add_monitor(Manager *manager) {
_cleanup_(sysctl_monitor_bpf_freep) struct sysctl_monitor_bpf *obj = NULL;
_cleanup_(bpf_link_freep) struct bpf_link *sysctl_link = NULL;
- _cleanup_(rb_freep) struct ring_buffer *sysctl_buffer = NULL;
+ _cleanup_(bpf_ring_buffer_freep) struct ring_buffer *sysctl_buffer = NULL;
_cleanup_close_ int cgroup_fd = -EBADF, rootcg = -EBADF;
_cleanup_free_ char *cgroup = NULL;
int idx = 0, r;
assert(manager);
manager->sysctl_event_source = sd_event_source_disable_unref(manager->sysctl_event_source);
- manager->sysctl_buffer = rb_free(manager->sysctl_buffer);
+ manager->sysctl_buffer = bpf_ring_buffer_free(manager->sysctl_buffer);
manager->sysctl_link = bpf_link_free(manager->sysctl_link);
manager->sysctl_skel = sysctl_monitor_bpf_free(manager->sysctl_skel);
manager->cgroup_fd = safe_close(manager->cgroup_fd);
#include "sd-daemon.h"
#include "bpf-dlopen.h"
+#include "bpf-link.h"
#include "build-path.h"
#include "common-signal.h"
#include "env-util.h"
#if HAVE_VMLINUX_H
sd_event_source_disable_unref(m->userns_restrict_bpf_ring_buffer_event_source);
- if (m->userns_restrict_bpf_ring_buffer)
- sym_ring_buffer__free(m->userns_restrict_bpf_ring_buffer);
+ bpf_ring_buffer_free(m->userns_restrict_bpf_ring_buffer);
userns_restrict_bpf_free(m->userns_restrict_bpf);
#endif
return serialize_fd(f, fds, key, sym_bpf_link__fd(link));
}
-struct bpf_link *bpf_link_free(struct bpf_link *link) {
+struct bpf_link* bpf_link_free(struct bpf_link *link) {
/* If libbpf wasn't dlopen()ed, sym_bpf_link__destroy might be unresolved (NULL), so let's not try to
* call it if link is NULL. link might also be a non-null "error pointer", but such a value can only
* originate from a call to libbpf, but that means that libbpf is available, and we can let
return NULL;
}
+
+struct ring_buffer* bpf_ring_buffer_free(struct ring_buffer *rb) {
+ if (rb) /* See the comment in bpf_link_free(). */
+ sym_ring_buffer__free(rb);
+
+ return NULL;
+}
int bpf_serialize_link(FILE *f, FDSet *fds, const char *key, struct bpf_link *link);
-struct bpf_link *bpf_link_free(struct bpf_link *p);
+struct bpf_link* bpf_link_free(struct bpf_link *p);
DEFINE_TRIVIAL_CLEANUP_FUNC(struct bpf_link *, bpf_link_free);
+
+struct ring_buffer* bpf_ring_buffer_free(struct ring_buffer *rb);
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct ring_buffer *, bpf_ring_buffer_free);