chiark / gitweb /
loopback-setup: simplify code a bit
authorLennart Poettering <lennart@poettering.net>
Tue, 3 Feb 2015 12:53:01 +0000 (13:53 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 3 Feb 2015 12:53:01 +0000 (13:53 +0100)
src/core/loopback-setup.c

index e5c0c0c1f5a7a227bcfa909645e855cd989324ff..67ce160c1982f9cb7084cc3e9b7898cc6d4c7c64 100644 (file)
@@ -83,12 +83,17 @@ int loopback_setup(void) {
                 return r;
 
         r = start_loopback(rtnl);
-        if (r == -EPERM) {
-                if (!check_loopback(rtnl))
-                        return log_warning_errno(EPERM, "Failed to configure loopback device: %m");
-        } else if (r < 0)
-                return log_warning_errno(r, "Failed to configure loopback device: %m");
+        if (r < 0) {
+
+                /* If we lack the permissions to configure the
+                 * loopback device, but we find it to be already
+                 * configured, let's exit cleanly, in order to
+                 * supported unprivileged containers. */
+                if (r == -EPERM && check_loopback(rtnl))
+                        return 0;
 
+                return log_warning_errno(r, "Failed to configure loopback device: %m");
+        }
 
         return 0;
 }