aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-09 18:53:39 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-09 18:53:39 -0500
commit50c36504fc6090847f1fbdc7cf4852ae16d6e500 (patch)
treeaa43bb2839cbb733c2aa59fefc45b5c757458582 /kernel
parentce5c2d2c256a4c8b523036537cd6be2d6af8f69d (diff)
parentd1189c63ea5e3272dc390a83e1235f142b739eb4 (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.c17
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, &param, &val); 238 args = next_arg(args, &param, &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? */