diff options
author | Dave Reisner <d@falconindy.com> | 2016-12-02 09:23:23 -0500 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2017-07-17 17:58:35 +0200 |
commit | b7c94af763854e6640ed9cd40e56b8f924323c73 (patch) | |
tree | 5ea61340839bb61766c0059a81875cb029994b83 /src/core | |
parent | b6c1f19fc321ff2c88eb7d4a39d79a4943446a2d (diff) |
cgroup: properly check for ignore-notfound paths (#4803)
Follow-up to #4687 and e7330dfe14b1965f.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/cgroup.c | 11 |
1 files 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); |