From ead537940cfda6e9d98e86a1f9af7dc1f4914e02 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 25 Mar 2025 16:44:30 -0400 Subject: [PATCH 1/2] =?UTF-8?q?journald:=20rename=20stdout=5Fstream=5Fdest?= =?UTF-8?q?roy()=20=E2=86=92=20stdout=5Fstream=5Fterminate()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/journal/fuzz-journald-stream.c | 2 +- src/journal/journald-stream.c | 4 ++-- src/journal/journald-stream.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/journal/fuzz-journald-stream.c b/src/journal/fuzz-journald-stream.c index 3ad9e20222..f9c6bfba10 100644 --- a/src/journal/fuzz-journald-stream.c +++ b/src/journal/fuzz-journald-stream.c @@ -32,7 +32,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { sd_event_run(s->event, UINT64_MAX); if (s->n_stdout_streams > 0) - stdout_stream_destroy(stream); + stdout_stream_terminate(stream); return 0; } diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c index 2ada374b73..e45765df0c 100644 --- a/src/journal/journald-stream.c +++ b/src/journal/journald-stream.c @@ -137,7 +137,7 @@ StdoutStream* stdout_stream_free(StdoutStream *s) { DEFINE_TRIVIAL_CLEANUP_FUNC(StdoutStream*, stdout_stream_free); -void stdout_stream_destroy(StdoutStream *s) { +void stdout_stream_terminate(StdoutStream *s) { if (!s) return; @@ -649,7 +649,7 @@ static int stdout_stream_process(sd_event_source *es, int fd, uint32_t revents, return 1; terminate: - stdout_stream_destroy(s); + stdout_stream_terminate(s); return 0; } diff --git a/src/journal/journald-stream.h b/src/journal/journald-stream.h index 7b756c05ec..71d3394ed9 100644 --- a/src/journal/journald-stream.h +++ b/src/journal/journald-stream.h @@ -11,5 +11,5 @@ int server_restore_streams(Server *s, FDSet *fds); StdoutStream* stdout_stream_free(StdoutStream *s); int stdout_stream_install(Server *s, int fd, StdoutStream **ret); -void stdout_stream_destroy(StdoutStream *s); +void stdout_stream_terminate(StdoutStream *s); void stdout_stream_send_notify(StdoutStream *s); From 808a751fac34fba3f171befee78335b6218c84b2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 25 Mar 2025 16:45:16 -0400 Subject: [PATCH 2/2] journald: do not schedule idle timer if our event loop is dying --- src/journal/journald-server.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 13a95ef015..85728b343d 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -2467,7 +2467,8 @@ int server_start_or_stop_idle_timer(Server *s) { assert(s); - if (!server_is_idle(s)) { + if (sd_event_get_state(s->event) == SD_EVENT_FINISHED || + !server_is_idle(s)) { s->idle_event_source = sd_event_source_disable_unref(s->idle_event_source); return 0; }