mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-06 13:17:44 +03:00
manager: always close idle pipe when sending ready notification
This fixes a bug introduced by 6d93265955
.
The commit makes several functions skipped if the manager is already
in finished state, as
> In manager_check_finished(), more steps are skipped if MANAGER_IS_FINISHED().
> Those steps are idempotent, but no need to waste cycles trying to do them
> more than once.
However, the idle pipe may be re-opened after manager is finished:
manager_dispatch_run_queue() -> manager_watch_idle_pipe().
So, the closing the pipe is not idempotent here.
Fixes #21889.
This commit is contained in:
parent
5204355861
commit
9c1b17c3dc
@ -3557,14 +3557,14 @@ void manager_check_finished(Manager *m) {
|
||||
|
||||
manager_send_ready(m);
|
||||
|
||||
/* Notify Type=idle units that we are done now */
|
||||
manager_close_idle_pipe(m);
|
||||
|
||||
if (MANAGER_IS_FINISHED(m))
|
||||
return;
|
||||
|
||||
manager_flip_auto_status(m, false, "boot finished");
|
||||
|
||||
/* Notify Type=idle units that we are done now */
|
||||
manager_close_idle_pipe(m);
|
||||
|
||||
/* Turn off confirm spawn now */
|
||||
m->confirm_spawn = NULL;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user