|
|
78ba63 |
From 040e689654ef08c63ab93bf0875865398e8d9c91 Mon Sep 17 00:00:00 2001
|
|
|
78ba63 |
From: Tom Gundersen <teg@jklm.no>
|
|
|
78ba63 |
Date: Sun, 24 May 2015 15:20:36 +0200
|
|
|
78ba63 |
Subject: [PATCH] udevd: event - fix event queue in daemenozied mode
|
|
|
78ba63 |
MIME-Version: 1.0
|
|
|
78ba63 |
Content-Type: text/plain; charset=UTF-8
|
|
|
78ba63 |
Content-Transfer-Encoding: 8bit
|
|
|
78ba63 |
|
|
|
78ba63 |
We would enforce that events could only be added to the queue from the
|
|
|
78ba63 |
main process, but that brake in daemonized mode. Relax the restriction
|
|
|
78ba63 |
to only allow one process to add events to the queue.
|
|
|
78ba63 |
|
|
|
78ba63 |
Reported by Mantas Mikulėnas.
|
|
|
78ba63 |
---
|
|
|
78ba63 |
src/udev/udevd.c | 7 ++++---
|
|
|
78ba63 |
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
|
78ba63 |
|
|
|
78ba63 |
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
|
|
|
78ba63 |
index 4a44b03..b33a262 100644
|
|
|
78ba63 |
--- a/src/udev/udevd.c
|
|
|
78ba63 |
+++ b/src/udev/udevd.c
|
|
|
78ba63 |
@@ -564,7 +564,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) {
|
|
|
78ba63 |
assert(manager);
|
|
|
78ba63 |
assert(dev);
|
|
|
78ba63 |
|
|
|
78ba63 |
- /* only the main process can add events to the queue */
|
|
|
78ba63 |
+ /* only one process can add events to the queue */
|
|
|
78ba63 |
+ if (manager->pid == 0)
|
|
|
78ba63 |
+ manager->pid = getpid();
|
|
|
78ba63 |
+
|
|
|
78ba63 |
assert(manager->pid == getpid());
|
|
|
78ba63 |
|
|
|
78ba63 |
event = new0(struct event, 1);
|
|
|
78ba63 |
@@ -1300,8 +1303,6 @@ static int manager_new(Manager **ret) {
|
|
|
78ba63 |
if (!manager)
|
|
|
78ba63 |
return log_oom();
|
|
|
78ba63 |
|
|
|
78ba63 |
- manager->pid = getpid();
|
|
|
78ba63 |
-
|
|
|
78ba63 |
manager->fd_ep = -1;
|
|
|
78ba63 |
manager->fd_ctrl = -1;
|
|
|
78ba63 |
manager->fd_uevent = -1;
|
|
|
78ba63 |
--
|
|
|
78ba63 |
2.3.1
|
|
|
78ba63 |
|