udevd: worker - fully clean up unnecessary fds
authorTom Gundersen <teg@jklm.no>
Sun, 24 May 2015 13:10:04 +0000 (15:10 +0200)
committerTom Gundersen <teg@jklm.no>
Sun, 24 May 2015 13:29:48 +0000 (15:29 +0200)
These are only ever used in the parent process, so close them early in the worker.

src/udev/udevd.c

index afd4640..d8cb046 100644 (file)
@@ -329,11 +329,15 @@ static void worker_spawn(Manager *manager, struct event *event) {
 
                 manager_workers_free(manager);
                 event_queue_cleanup(manager, EVENT_UNDEF);
+
                 manager->monitor = udev_monitor_unref(manager->monitor);
+                manager->ctrl_conn_blocking = udev_ctrl_connection_unref(manager->ctrl_conn_blocking);
                 manager->ctrl = udev_ctrl_unref(manager->ctrl);
+
+                manager->fd_ep = safe_close(manager->fd_ep);
                 manager->fd_signal = safe_close(manager->fd_signal);
+                manager->fd_inotify = safe_close(manager->fd_inotify);
                 manager->worker_watch[READ_END] = safe_close(manager->worker_watch[READ_END]);
-                manager->fd_ep = safe_close(manager->fd_ep);
 
                 sigfillset(&mask);
                 fd_signal = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);