]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journald-kmsg: introduce manager_close_kernel_seqnum() helper function
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Jul 2025 15:24:17 +0000 (00:24 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 18 Jul 2025 06:27:37 +0000 (15:27 +0900)
src/journal/journald-kmsg.c
src/journal/journald-kmsg.h
src/journal/journald-manager.c
src/journal/journald-manager.h

index 95163491c3717c8bafa1d182e7544ba332e6ec40..1344397cb848e5346a2c818376d76009528bd671 100644 (file)
@@ -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;
 
index 51e5f34492dbda572e8b7c404cd4595152a06e89..5429e9adcd7acc1fe168be094e026c8742af8282 100644 (file)
@@ -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);
index b74dcfa7889976f42d62ebc41225c43a97935e1f..87102a53070bbd8c86aca8146f07d20dea9a47db 100644 (file)
@@ -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);
index a9ef3f394f8cec40226d65da3f5770e1db20a89b..6237c55d9f9e589a0e0654d4ebfeac83d2d2a70b 100644 (file)
@@ -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);