From b7c94af763854e6640ed9cd40e56b8f924323c73 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Fri, 2 Dec 2016 09:23:23 -0500 Subject: [PATCH] cgroup: properly check for ignore-notfound paths (#4803) Follow-up to #4687 and e7330dfe14b1965f. --- src/core/cgroup.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/core/cgroup.c b/src/core/cgroup.c index e44f72924..1e14d9fc4 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -288,14 +288,21 @@ static int lookup_block_device(const char *p, dev_t *dev) { static int whitelist_device(const char *path, const char *node, const char *acc) { char buf[2+DECIMAL_STR_MAX(dev_t)*2+2+4]; struct stat st; + bool ignore_notfound; int r; assert(path); assert(acc); + if (node[0] == '-') { + /* Non-existent paths starting with "-" must be silently ignored */ + node++; + ignore_notfound = true; + } else + ignore_notfound = false; + if (stat(node, &st) < 0) { - /* path starting with "-" must be silently ignored */ - if (errno == ENOENT && startswith(node, "-")) + if (errno == ENOENT && ignore_notfound) return 0; return log_warning_errno(errno, "Couldn't stat device %s: %m", node); -- 2.30.2