]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udevd: event - fix event queue in daemenozied mode
authorTom Gundersen <teg@jklm.no>
Sun, 24 May 2015 13:20:36 +0000 (15:20 +0200)
committerTom Gundersen <teg@jklm.no>
Sun, 24 May 2015 13:29:48 +0000 (15:29 +0200)
We would enforce that events could only be added to the queue from the
main process, but that brake in daemonized mode. Relax the restriction
to only allow one process to add events to the queue.

Reported by Mantas Mikulėnas.

src/udev/udevd.c

index 4a44b031438f180a9c8a72088d00a3c53767a75d..b33a262ffc1f68f0bc7a4240a82187cbdee47912 100644 (file)
@@ -564,7 +564,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) {
         assert(manager);
         assert(dev);
 
-        /* only the main process can add events to the queue */
+        /* only one process can add events to the queue */
+        if (manager->pid == 0)
+                manager->pid = getpid();
+
         assert(manager->pid == getpid());
 
         event = new0(struct event, 1);
@@ -1300,8 +1303,6 @@ static int manager_new(Manager **ret) {
         if (!manager)
                 return log_oom();
 
-        manager->pid = getpid();
-
         manager->fd_ep = -1;
         manager->fd_ctrl = -1;
         manager->fd_uevent = -1;