]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - kernel/params.c
Merge branch 'akpm-current/current'
[karo-tx-linux.git] / kernel / params.c
index 93a380a2345d71ae8c884a56006977eec959cbf8..a6d6149c0fe60df1ca38d9a66acef281b78ee79d 100644 (file)
@@ -223,7 +223,7 @@ char *parse_args(const char *doing,
                 int (*unknown)(char *param, char *val,
                                const char *doing, void *arg))
 {
-       char *param, *val;
+       char *param, *val, *err = NULL;
 
        /* Chew leading spaces */
        args = skip_spaces(args);
@@ -238,7 +238,7 @@ char *parse_args(const char *doing,
                args = next_arg(args, &param, &val);
                /* Stop at -- */
                if (!val && strcmp(param, "--") == 0)
-                       return args;
+                       return err ?: args;
                irq_was_disabled = irqs_disabled();
                ret = parse_one(param, val, doing, params, num,
                                min_level, max_level, arg, unknown);
@@ -247,24 +247,25 @@ char *parse_args(const char *doing,
                                doing, param);
 
                switch (ret) {
+               case 0:
+                       continue;
                case -ENOENT:
                        pr_err("%s: Unknown parameter `%s'\n", doing, param);
-                       return ERR_PTR(ret);
+                       break;
                case -ENOSPC:
                        pr_err("%s: `%s' too large for parameter `%s'\n",
                               doing, val ?: "", param);
-                       return ERR_PTR(ret);
-               case 0:
                        break;
                default:
                        pr_err("%s: `%s' invalid for parameter `%s'\n",
                               doing, val ?: "", param);
-                       return ERR_PTR(ret);
+                       break;
                }
+
+               err = ERR_PTR(ret);
        }
 
-       /* All parsed OK. */
-       return NULL;
+       return err;
 }
 
 /* Lazy bastard, eh? */