From: Yu Watanabe Date: Sat, 28 Dec 2024 04:36:32 +0000 (+0900) Subject: systemctl: also ignore ENOENT in checking inhibitors X-Git-Tag: v258-rc1~1770 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=084f361b509cbffe7ffd5ab6085469f76f799fe5;p=thirdparty%2Fsystemd.git systemctl: also ignore ENOENT in checking inhibitors Fixes a bug caused by 804874d26ac73e0af07c4c5d7165c95372f03f6d. Follow-up for a1417e5563acb73a0accdc12b3af91e4ec1c7f46. Fixes #35757. --- diff --git a/src/systemctl/systemctl-logind.c b/src/systemctl/systemctl-logind.c index e54067397aa..495cccd828e 100644 --- a/src/systemctl/systemctl-logind.c +++ b/src/systemctl/systemctl-logind.c @@ -152,9 +152,9 @@ int logind_check_inhibitors(enum action a) { return 0; r = acquire_bus_full(BUS_FULL, /* graceful = */ true, &bus); - if (r == -ECONNREFUSED && geteuid() == 0) - return 0; /* When D-Bus is not running, allow root to force a shutdown. E.g. when running at - * the emergency console. */ + if (ERRNO_IS_NEG_DISCONNECT(r) && geteuid() == 0) + return 0; /* When D-Bus is not running (ECONNREFUSED) or D-Bus socket is not created (ENOENT), + * allow root to force a shutdown. E.g. when running at the emergency console. */ if (r < 0) return r;