|
@@ -177,13 +177,13 @@ static char *next_arg(char *args, char **param, char **val)
|
|
}
|
|
}
|
|
|
|
|
|
/* Args looks like "foo=bar,bar2 baz=fuz wiz". */
|
|
/* Args looks like "foo=bar,bar2 baz=fuz wiz". */
|
|
-int parse_args(const char *doing,
|
|
|
|
- char *args,
|
|
|
|
- const struct kernel_param *params,
|
|
|
|
- unsigned num,
|
|
|
|
- s16 min_level,
|
|
|
|
- s16 max_level,
|
|
|
|
- int (*unknown)(char *param, char *val, const char *doing))
|
|
|
|
|
|
+char *parse_args(const char *doing,
|
|
|
|
+ char *args,
|
|
|
|
+ const struct kernel_param *params,
|
|
|
|
+ unsigned num,
|
|
|
|
+ s16 min_level,
|
|
|
|
+ s16 max_level,
|
|
|
|
+ int (*unknown)(char *param, char *val, const char *doing))
|
|
{
|
|
{
|
|
char *param, *val;
|
|
char *param, *val;
|
|
|
|
|
|
@@ -198,6 +198,9 @@ int parse_args(const char *doing,
|
|
int irq_was_disabled;
|
|
int irq_was_disabled;
|
|
|
|
|
|
args = next_arg(args, ¶m, &val);
|
|
args = next_arg(args, ¶m, &val);
|
|
|
|
+ /* Stop at -- */
|
|
|
|
+ if (!val && strcmp(param, "--") == 0)
|
|
|
|
+ return args;
|
|
irq_was_disabled = irqs_disabled();
|
|
irq_was_disabled = irqs_disabled();
|
|
ret = parse_one(param, val, doing, params, num,
|
|
ret = parse_one(param, val, doing, params, num,
|
|
min_level, max_level, unknown);
|
|
min_level, max_level, unknown);
|
|
@@ -208,22 +211,22 @@ int parse_args(const char *doing,
|
|
switch (ret) {
|
|
switch (ret) {
|
|
case -ENOENT:
|
|
case -ENOENT:
|
|
pr_err("%s: Unknown parameter `%s'\n", doing, param);
|
|
pr_err("%s: Unknown parameter `%s'\n", doing, param);
|
|
- return ret;
|
|
|
|
|
|
+ return ERR_PTR(ret);
|
|
case -ENOSPC:
|
|
case -ENOSPC:
|
|
pr_err("%s: `%s' too large for parameter `%s'\n",
|
|
pr_err("%s: `%s' too large for parameter `%s'\n",
|
|
doing, val ?: "", param);
|
|
doing, val ?: "", param);
|
|
- return ret;
|
|
|
|
|
|
+ return ERR_PTR(ret);
|
|
case 0:
|
|
case 0:
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
pr_err("%s: `%s' invalid for parameter `%s'\n",
|
|
pr_err("%s: `%s' invalid for parameter `%s'\n",
|
|
doing, val ?: "", param);
|
|
doing, val ?: "", param);
|
|
- return ret;
|
|
|
|
|
|
+ return ERR_PTR(ret);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* All parsed OK. */
|
|
/* All parsed OK. */
|
|
- return 0;
|
|
|
|
|
|
+ return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
/* Lazy bastard, eh? */
|
|
/* Lazy bastard, eh? */
|