]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sysctl: don't propagate ENOENT sysctl options
authorLennart Poettering <lennart@poettering.net>
Fri, 24 Apr 2015 17:55:16 +0000 (19:55 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 24 Apr 2015 17:56:47 +0000 (19:56 +0200)
We shouldn't fail the sysctl service if an option is missing.

Previously the warning about this was already downgraded to LOG_DEBUG,
but we really shouldn't propagate such errors either.

src/sysctl/sysctl.c

index 43c765f064aa4acf92c3d553c052062fdc0b8416..fe277a20151c249c59ed092492b340fb43fbd8d5 100644 (file)
@@ -42,24 +42,23 @@ static char **arg_prefixes = NULL;
 static const char conf_file_dirs[] = CONF_DIRS_NULSTR("sysctl");
 
 static int apply_all(Hashmap *sysctl_options) {
-        int r = 0;
         char *property, *value;
         Iterator i;
-
-        assert(sysctl_options);
+        int r = 0;
 
         HASHMAP_FOREACH_KEY(value, property, sysctl_options, i) {
                 int k;
 
                 k = sysctl_write(property, value);
                 if (k < 0) {
-                        log_full(k == -ENOENT ? LOG_DEBUG : LOG_WARNING,
-                                 "Failed to write '%s' to '%s': %s", value, property, strerror(-k));
+                        log_full_errno(k == -ENOENT ? LOG_DEBUG : LOG_WARNING, k,
+                                       "Failed to write '%s' to '%s': %m", value, property);
 
-                        if (r == 0)
+                        if (r == 0 && k != -ENOENT)
                                 r = k;
                 }
         }
+
         return r;
 }
 
@@ -208,13 +207,14 @@ static int parse_argv(int argc, char *argv[]) {
                          * we need to keep compatibility. We now support any
                          * sysctl name available. */
                         sysctl_normalize(optarg);
+
                         if (startswith(optarg, "/proc/sys"))
                                 p = strdup(optarg);
                         else
                                 p = strappend("/proc/sys/", optarg);
-
                         if (!p)
                                 return log_oom();
+
                         if (strv_consume(&arg_prefixes, p) < 0)
                                 return log_oom();