diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-09 18:53:39 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-09 18:53:39 -0500 |
commit | 50c36504fc6090847f1fbdc7cf4852ae16d6e500 (patch) | |
tree | aa43bb2839cbb733c2aa59fefc45b5c757458582 /kernel | |
parent | ce5c2d2c256a4c8b523036537cd6be2d6af8f69d (diff) | |
parent | d1189c63ea5e3272dc390a83e1235f142b739eb4 (diff) |
Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
Pull module updates from Rusty Russell:
"Nothing exciting, minor tweaks and cleanups"
* tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
scripts: [modpost] add new sections to white list
modpost: Add flag -E for making section mismatches fatal
params: don't ignore the rest of cmdline if parse_one() fails
modpost: abort if a module symbol is too long
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/params.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/kernel/params.c b/kernel/params.c index 93a380a2345d..a6d6149c0fe6 100644 --- a/kernel/params.c +++ b/kernel/params.c | |||
@@ -223,7 +223,7 @@ char *parse_args(const char *doing, | |||
223 | int (*unknown)(char *param, char *val, | 223 | int (*unknown)(char *param, char *val, |
224 | const char *doing, void *arg)) | 224 | const char *doing, void *arg)) |
225 | { | 225 | { |
226 | char *param, *val; | 226 | char *param, *val, *err = NULL; |
227 | 227 | ||
228 | /* Chew leading spaces */ | 228 | /* Chew leading spaces */ |
229 | args = skip_spaces(args); | 229 | args = skip_spaces(args); |
@@ -238,7 +238,7 @@ char *parse_args(const char *doing, | |||
238 | args = next_arg(args, ¶m, &val); | 238 | args = next_arg(args, ¶m, &val); |
239 | /* Stop at -- */ | 239 | /* Stop at -- */ |
240 | if (!val && strcmp(param, "--") == 0) | 240 | if (!val && strcmp(param, "--") == 0) |
241 | return args; | 241 | return err ?: args; |
242 | irq_was_disabled = irqs_disabled(); | 242 | irq_was_disabled = irqs_disabled(); |
243 | ret = parse_one(param, val, doing, params, num, | 243 | ret = parse_one(param, val, doing, params, num, |
244 | min_level, max_level, arg, unknown); | 244 | min_level, max_level, arg, unknown); |
@@ -247,24 +247,25 @@ char *parse_args(const char *doing, | |||
247 | doing, param); | 247 | doing, param); |
248 | 248 | ||
249 | switch (ret) { | 249 | switch (ret) { |
250 | case 0: | ||
251 | continue; | ||
250 | case -ENOENT: | 252 | case -ENOENT: |
251 | pr_err("%s: Unknown parameter `%s'\n", doing, param); | 253 | pr_err("%s: Unknown parameter `%s'\n", doing, param); |
252 | return ERR_PTR(ret); | 254 | break; |
253 | case -ENOSPC: | 255 | case -ENOSPC: |
254 | pr_err("%s: `%s' too large for parameter `%s'\n", | 256 | pr_err("%s: `%s' too large for parameter `%s'\n", |
255 | doing, val ?: "", param); | 257 | doing, val ?: "", param); |
256 | return ERR_PTR(ret); | ||
257 | case 0: | ||
258 | break; | 258 | break; |
259 | default: | 259 | default: |
260 | pr_err("%s: `%s' invalid for parameter `%s'\n", | 260 | pr_err("%s: `%s' invalid for parameter `%s'\n", |
261 | doing, val ?: "", param); | 261 | doing, val ?: "", param); |
262 | return ERR_PTR(ret); | 262 | break; |
263 | } | 263 | } |
264 | |||
265 | err = ERR_PTR(ret); | ||
264 | } | 266 | } |
265 | 267 | ||
266 | /* All parsed OK. */ | 268 | return err; |
267 | return NULL; | ||
268 | } | 269 | } |
269 | 270 | ||
270 | /* Lazy bastard, eh? */ | 271 | /* Lazy bastard, eh? */ |