From: Yu Watanabe Date: Thu, 21 Nov 2024 20:15:49 +0000 (+0900) Subject: core/service: service_add_fd_store() consumes passed fd X-Git-Tag: v256.9~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6dcb53ba0ac6fa7b8e82ef5dba7c507f324a10a1;p=thirdparty%2Fsystemd.git core/service: service_add_fd_store() consumes passed fd Without this change, the fd is closed twice on failure. Fixes a bug introduced by dff9808a628c31b7ecb1f1aba8fdc3be06ce8372. Fixes #35288. (cherry picked from commit d99198819caeff6f40a0a520364e59b8a0cbaa4f) --- diff --git a/src/core/service.c b/src/core/service.c index 549847e3f93..0c7adb3a0ac 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3259,14 +3259,13 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, return 0; } - r = service_add_fd_store(s, fd, fdn, do_poll); + r = service_add_fd_store(s, TAKE_FD(fd), fdn, do_poll); if (r < 0) { log_unit_debug_errno(u, r, "Failed to store deserialized fd '%s', ignoring: %m", fdn); return 0; } - TAKE_FD(fd); } else if (streq(key, "main-exec-status-pid")) { pid_t pid;