]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
login: Continue watching leader pidfd after stop
authormsizanoen <msizanoen@qtmlabs.xyz>
Wed, 12 Feb 2025 15:09:01 +0000 (22:09 +0700)
committermsizanoen <msizanoen@qtmlabs.xyz>
Thu, 13 Feb 2025 02:29:11 +0000 (09:29 +0700)
This ensures that garbage collection will be triggered when the leader
process dies.

src/login/logind-session.c

index e8c3ae621b2ff435c114d459afcdcb3a19b8e305..60f3d6e3bb80e801d5cd15210c5a09458d087a2c 100644 (file)
@@ -91,6 +91,9 @@ static int session_dispatch_leader_pidfd(sd_event_source *es, int fd, uint32_t r
         Session *s = ASSERT_PTR(userdata);
 
         assert(s->leader.fd == fd);
+
+        s->leader_pidfd_event_source = sd_event_source_unref(s->leader_pidfd_event_source);
+
         session_stop(s, /* force= */ false);
 
         return 1;
@@ -959,7 +962,6 @@ int session_stop(Session *s, bool force) {
                 return 0;
 
         s->timer_event_source = sd_event_source_unref(s->timer_event_source);
-        s->leader_pidfd_event_source = sd_event_source_unref(s->leader_pidfd_event_source);
 
         if (s->seat)
                 seat_evict_position(s->seat, s);