summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnita Zhang <the.anitazha@gmail.com>2019-10-30 15:58:36 -0700
committerGitHub <noreply@github.com>2019-10-30 15:58:36 -0700
commitb219d193a22dbc776f12832a8bdc2c69bff582f8 (patch)
treedda51b86c6b0b1b99e7608bf684541bf95c5dd48
parent9d9010f2e97fd33f878aae754a777491a0505876 (diff)
parentf59825595182d70b9ead238d1e885d0db99cc201 (diff)
downloadsystemd-b219d193a22dbc776f12832a8bdc2c69bff582f8.tar.gz
Merge pull request #13884 from poettering/event-fd-close-fix
sd-event: don't invalidate source type on disconnect
-rw-r--r--src/libsystemd/sd-event/sd-event.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
index ee10728ece..d93d2f4046 100644
--- a/src/libsystemd/sd-event/sd-event.c
+++ b/src/libsystemd/sd-event/sd-event.c
@@ -771,11 +771,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);
}