From 059efb97e397b76c9ef5c15449427ec6f74b006f Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 16 Jul 2025 00:24:17 +0900 Subject: [PATCH] journald-kmsg: introduce manager_close_kernel_seqnum() helper function --- src/journal/journald-kmsg.c | 8 ++++++++ src/journal/journald-kmsg.h | 1 + src/journal/journald-manager.c | 4 ++-- src/journal/journald-manager.h | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c index 95163491c37..1344397cb84 100644 --- a/src/journal/journald-kmsg.c +++ b/src/journal/journald-kmsg.c @@ -429,6 +429,7 @@ int manager_open_kernel_seqnum(Manager *m) { int r; assert(m); + assert(!m->kernel_seqnum); /* We store the seqnum we last read in an mmapped file. That way we can just use it like a variable, * but it is persistent and automatically flushed at reboot. */ @@ -443,6 +444,13 @@ int manager_open_kernel_seqnum(Manager *m) { return 0; } +void manager_close_kernel_seqnum(Manager *m) { + assert(m); + + manager_unmap_seqnum_file(m->kernel_seqnum, sizeof(*m->kernel_seqnum)); + m->kernel_seqnum = NULL; +} + int manager_reload_dev_kmsg(Manager *m) { int r; diff --git a/src/journal/journald-kmsg.h b/src/journal/journald-kmsg.h index 51e5f34492d..5429e9adcd7 100644 --- a/src/journal/journald-kmsg.h +++ b/src/journal/journald-kmsg.h @@ -10,5 +10,6 @@ int manager_reload_dev_kmsg(Manager *m); void manager_forward_kmsg(Manager *m, int priority, const char *identifier, const char *message, const struct ucred *ucred); int manager_open_kernel_seqnum(Manager *m); +void manager_close_kernel_seqnum(Manager *m); void dev_kmsg_record(Manager *m, char *p, size_t l); diff --git a/src/journal/journald-manager.c b/src/journal/journald-manager.c index b74dcfa7889..87102a53070 100644 --- a/src/journal/journald-manager.c +++ b/src/journal/journald-manager.c @@ -2107,7 +2107,7 @@ int manager_map_seqnum_file( return 0; } -static void manager_unmap_seqnum_file(void *p, size_t size) { +void manager_unmap_seqnum_file(void *p, size_t size) { assert(size > 0); if (!p) @@ -2599,7 +2599,7 @@ Manager* manager_free(Manager *m) { ordered_hashmap_free(m->ratelimit_groups_by_id); manager_unmap_seqnum_file(m->seqnum, sizeof(*m->seqnum)); - manager_unmap_seqnum_file(m->kernel_seqnum, sizeof(*m->kernel_seqnum)); + manager_close_kernel_seqnum(m); free(m->buffer); free(m->cgroup_root); diff --git a/src/journal/journald-manager.h b/src/journal/journald-manager.h index a9ef3f394f8..6237c55d9f9 100644 --- a/src/journal/journald-manager.h +++ b/src/journal/journald-manager.h @@ -192,3 +192,4 @@ int manager_start_or_stop_idle_timer(Manager *m); int manager_reload_journals(Manager *m); int manager_map_seqnum_file(Manager *m, const char *fname, size_t size, void **ret); +void manager_unmap_seqnum_file(void *p, size_t size); -- 2.47.3