]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
manager: remove timer fd explicitly from epoll
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Sat, 2 Mar 2013 16:31:53 +0000 (17:31 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 6 Mar 2013 16:16:13 +0000 (17:16 +0100)
Forked processes can keep the old fd alive triggering epoll over and
over again else.

https://bugs.freedesktop.org/show_bug.cgi?id=61697

src/core/manager.c

index 1d188081a1d71f5bac416242ec3744c94461e624..c261b25fb658ad0f515afde1f309367c026863e5 100644 (file)
@@ -1674,6 +1674,8 @@ static int process_event(Manager *m, struct epoll_event *ev) {
                            NULL);
 
                 /* Restart the watch */
+                epoll_ctl(m->epoll_fd, EPOLL_CTL_DEL, m->time_change_watch.fd,
+                          NULL);
                 close_nointr_nofail(m->time_change_watch.fd);
                 watch_init(&m->time_change_watch);
                 manager_setup_time_change(m);