From: Daan De Meyer Date: Wed, 8 May 2024 09:35:21 +0000 (+0200) Subject: tmpfiles: Don't fail if file does not exist in item_do() X-Git-Tag: v256-rc2~72^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=677430b3c7fcd1b352eb66f19b8746741459b91a;p=thirdparty%2Fsystemd.git tmpfiles: Don't fail if file does not exist in item_do() If the file was removed by some other program, we should just go to the next one without failing. item_do() is only used for recursive globs instead of fixed paths so skipping on missing files makes sense (unlike if the path was fixed where we should probably fail). Fixes #32691 (hopefully) --- diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index ec6d8dcfa16..722dff100a1 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -2512,7 +2512,7 @@ static int item_do( fdaction_t action) { struct stat st; - int r = 0, q; + int r = 0, q = 0; assert(c); assert(i); @@ -2547,9 +2547,10 @@ static int item_do( continue; de_fd = openat(fd, de->d_name, O_NOFOLLOW|O_CLOEXEC|O_PATH); - if (de_fd < 0) - q = log_error_errno(errno, "Failed to open() file '%s': %m", de->d_name); - else { + if (de_fd < 0) { + if (errno != -ENOENT) + q = log_error_errno(errno, "Failed to open file '%s': %m", de->d_name); + } else { _cleanup_free_ char *de_path = NULL; de_path = path_join(path, de->d_name);