40 lines
1.4 KiB
Diff
40 lines
1.4 KiB
Diff
From 01c94571660c44c415ba8bcba62176f45bf84be5 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Wed, 30 Oct 2019 20:26:50 +0100
|
|
Subject: [PATCH 12/20] sd-event: refuse running default event loops in any
|
|
other thread than the one they are default for
|
|
|
|
(cherry picked from commit e544601536ac13a288d7476f4400c7b0f22b7ea1)
|
|
|
|
Related: #1819868
|
|
|
|
[commit 4c5fdbde7e745126f31542a70b45cc4faec094d2 from
|
|
https://github.com/systemd-rhel/rhel-8/
|
|
|
|
LZ: Dropped the part that won't affect code to simplify the merging.]
|
|
|
|
Signed-off-by: Li Zhou <li.zhou@windriver.com>
|
|
---
|
|
src/libsystemd/sd-event/sd-event.c | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
|
|
index 299312a..a2f7868 100644
|
|
--- a/src/libsystemd/sd-event/sd-event.c
|
|
+++ b/src/libsystemd/sd-event/sd-event.c
|
|
@@ -2494,6 +2494,11 @@ _public_ int sd_event_prepare(sd_event *e) {
|
|
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
|
|
assert_return(e->state == SD_EVENT_INITIAL, -EBUSY);
|
|
|
|
+ /* Let's check that if we are a default event loop we are executed in the correct thread. We only do
|
|
+ * this check here once, since gettid() is typically not cached, and thus want to minimize
|
|
+ * syscalls */
|
|
+ assert_return(!e->default_event_ptr || e->tid == gettid(), -EREMOTEIO);
|
|
+
|
|
if (e->exit_requested)
|
|
goto pending;
|
|
|
|
--
|
|
2.17.1
|
|
|