]> 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)
committerLuca Boccassi <luca.boccassi@gmail.com>
Thu, 13 Feb 2025 15:54:46 +0000 (15:54 +0000)
This ensures that garbage collection will be triggered when the leader
process dies.

(cherry picked from commit b2a4109031c1bd79c498f8642df150deeebe1708)

src/login/logind-session.c

index 351b64b60bba83e984355270c4677ae52cc72426..e825d39f6c5fb6b2e2b5e8e403673c1dbb06d97c 100644 (file)
@@ -90,6 +90,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;
@@ -950,7 +953,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);