summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorDave Reisner <d@falconindy.com>2016-12-02 09:23:23 -0500
committerSven Eden <yamakuzure@gmx.net>2017-07-17 17:58:35 +0200
commitb7c94af763854e6640ed9cd40e56b8f924323c73 (patch)
tree5ea61340839bb61766c0059a81875cb029994b83 /src/core
parentb6c1f19fc321ff2c88eb7d4a39d79a4943446a2d (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.c11
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);