From: Daan De Meyer Date: Fri, 14 Nov 2025 11:14:44 +0000 (+0100) Subject: sd-event: Move SOURCE_POST check into mark_post_sources_pending() X-Git-Tag: v259-rc1~57 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6aff6d3ffc8a481bb663ac4dd0cf479845a6e24f;p=thirdparty%2Fsystemd.git sd-event: Move SOURCE_POST check into mark_post_sources_pending() Rename to maybe_mark_post_sources_pending() as well to match the new behavior. Follow up for 4c8b6d636c92e84f4b40db5656db58f71f397a1d --- diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c index 20a9c5c12b8..a211d62f007 100644 --- a/src/libsystemd/sd-event/sd-event.c +++ b/src/libsystemd/sd-event/sd-event.c @@ -4079,10 +4079,13 @@ static int source_memory_pressure_initiate_dispatch(sd_event_source *s) { return 0; /* go on, dispatch to user callback */ } -static int mark_post_sources_pending(sd_event *e) { +static int maybe_mark_post_sources_pending(EventSourceType t, sd_event *e) { sd_event_source *z; int r; + if (t == SOURCE_POST) + return 0; + SET_FOREACH(z, e->post_sources) { if (event_source_is_offline(z)) continue; @@ -4134,12 +4137,10 @@ static int source_dispatch(sd_event_source *s) { return r; } - if (s->type != SOURCE_POST) { - /* If we execute a non-post source, let's mark all post sources as pending. */ - r = mark_post_sources_pending(s->event); - if (r < 0) - return r; - } + /* If we execute a non-post source, let's mark all post sources as pending. */ + r = maybe_mark_post_sources_pending(s->type, s->event); + if (r < 0) + return r; if (s->type == SOURCE_MEMORY_PRESSURE) { r = source_memory_pressure_initiate_dispatch(s); @@ -4248,13 +4249,11 @@ static int source_dispatch(sd_event_source *s) { s->dispatching = false; - if (saved_type != SOURCE_POST) { - /* More post sources might have been added while executing the callback, let's make sure - * those are marked pending as well. */ - r = mark_post_sources_pending(saved_event); - if (r < 0) - return r; - } + /* More post sources might have been added while executing the callback, let's make sure + * those are marked pending as well. */ + r = maybe_mark_post_sources_pending(saved_type, saved_event); + if (r < 0) + return r; finish: if (r < 0) {