From: Yu Watanabe Date: Tue, 15 Jul 2025 15:24:17 +0000 (+0900) Subject: journald-kmsg: introduce manager_close_kernel_seqnum() helper function X-Git-Tag: v258-rc1~34^2~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=059efb97e397b76c9ef5c15449427ec6f74b006f;p=thirdparty%2Fsystemd.git journald-kmsg: introduce manager_close_kernel_seqnum() helper function --- 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);