You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.2 KiB
34 lines
1.2 KiB
2 years ago
|
From e48586dcfa66731a353ecc832e43fab75559e2cf Mon Sep 17 00:00:00 2001
|
||
|
From: Lennart Poettering <lennart@poettering.net>
|
||
|
Date: Wed, 30 Oct 2019 16:37:42 +0100
|
||
|
Subject: [PATCH] sd-event: don't invalidate source type on disconnect
|
||
|
|
||
|
This fixes fd closing if fd ownership is requested.
|
||
|
|
||
|
(cherry picked from commit f59825595182d70b9ead238d1e885d0db99cc201)
|
||
|
|
||
|
Resolves: #2115396
|
||
|
---
|
||
|
src/libsystemd/sd-event/sd-event.c | 4 +++-
|
||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
|
||
|
index 0adfdd9e1a..09d4584bf9 100644
|
||
|
--- a/src/libsystemd/sd-event/sd-event.c
|
||
|
+++ b/src/libsystemd/sd-event/sd-event.c
|
||
|
@@ -1104,11 +1104,13 @@ static void source_disconnect(sd_event_source *s) {
|
||
|
|
||
|
event = s->event;
|
||
|
|
||
|
- s->type = _SOURCE_EVENT_SOURCE_TYPE_INVALID;
|
||
|
s->event = NULL;
|
||
|
LIST_REMOVE(sources, event->sources, s);
|
||
|
event->n_sources--;
|
||
|
|
||
|
+ /* Note that we don't invalidate the type here, since we still need it in order to close the fd or
|
||
|
+ * pidfd associated with this event source, which we'll do only on source_free(). */
|
||
|
+
|
||
|
if (!s->floating)
|
||
|
sd_event_unref(event);
|
||
|
}
|