basic/virt: fix userns check on CONFIG_USER_NS=n kernel (#4651)
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 11 Nov 2016 15:54:54 +0000 (10:54 -0500)
committerEvgeny Vereshchagin <evvers@ya.ru>
Fri, 11 Nov 2016 15:54:54 +0000 (18:54 +0300)
ENOENT should be treated as "false", but because of the broken errno check it
was treated as an error. So ConditionVirtualization=user-namespaces probably
returned the correct answer, but only by accident.

Fixes #4608.

src/basic/virt.c

index 69b0f96..d8d5738 100644 (file)
@@ -496,7 +496,7 @@ static int userns_has_mapping(const char *name) {
         f = fopen(name, "re");
         if (!f) {
                 log_debug_errno(errno, "Failed to open %s: %m", name);
-                return errno == -ENOENT ? false : -errno;
+                return errno == ENOENT ? false : -errno;
         }
 
         n = getline(&buf, &n_allocated, f);