summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2015-05-24 15:20:36 +0200
committerTom Gundersen <teg@jklm.no>2015-05-24 15:29:48 +0200
commit040e689654ef08c63ab93bf0875865398e8d9c91 (patch)
tree1776b20946e12f1c193c006ac41f9333ddb44622
parent2dd9f98d2d7a06a8e28729da6339fce50d66e9cc (diff)
downloadsystemd-040e689654ef08c63ab93bf0875865398e8d9c91.tar.gz
udevd: event - fix event queue in daemenozied mode
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.
-rw-r--r--src/udev/udevd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 4a44b03143..b33a262ffc 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -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;