aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/params.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/params.c')
-rw-r--r--kernel/params.c23
1 files changed, 2 insertions, 21 deletions
diff --git a/kernel/params.c b/kernel/params.c
index 47f5bf12434a..508828afb874 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -297,35 +297,18 @@ EXPORT_SYMBOL(param_ops_charp);
297/* Actually could be a bool or an int, for historical reasons. */ 297/* Actually could be a bool or an int, for historical reasons. */
298int param_set_bool(const char *val, const struct kernel_param *kp) 298int param_set_bool(const char *val, const struct kernel_param *kp)
299{ 299{
300 bool v;
301 int ret;
302
303 /* No equals means "set"... */ 300 /* No equals means "set"... */
304 if (!val) val = "1"; 301 if (!val) val = "1";
305 302
306 /* One of =[yYnN01] */ 303 /* One of =[yYnN01] */
307 ret = strtobool(val, &v); 304 return strtobool(val, kp->arg);
308 if (ret)
309 return ret;
310
311 if (kp->flags & KPARAM_ISBOOL)
312 *(bool *)kp->arg = v;
313 else
314 *(int *)kp->arg = v;
315 return 0;
316} 305}
317EXPORT_SYMBOL(param_set_bool); 306EXPORT_SYMBOL(param_set_bool);
318 307
319int param_get_bool(char *buffer, const struct kernel_param *kp) 308int param_get_bool(char *buffer, const struct kernel_param *kp)
320{ 309{
321 bool val;
322 if (kp->flags & KPARAM_ISBOOL)
323 val = *(bool *)kp->arg;
324 else
325 val = *(int *)kp->arg;
326
327 /* Y and N chosen as being relatively non-coder friendly */ 310 /* Y and N chosen as being relatively non-coder friendly */
328 return sprintf(buffer, "%c", val ? 'Y' : 'N'); 311 return sprintf(buffer, "%c", *(bool *)kp->arg ? 'Y' : 'N');
329} 312}
330EXPORT_SYMBOL(param_get_bool); 313EXPORT_SYMBOL(param_get_bool);
331 314
@@ -343,7 +326,6 @@ int param_set_invbool(const char *val, const struct kernel_param *kp)
343 struct kernel_param dummy; 326 struct kernel_param dummy;
344 327
345 dummy.arg = &boolval; 328 dummy.arg = &boolval;
346 dummy.flags = KPARAM_ISBOOL;
347 ret = param_set_bool(val, &dummy); 329 ret = param_set_bool(val, &dummy);
348 if (ret == 0) 330 if (ret == 0)
349 *(bool *)kp->arg = !boolval; 331 *(bool *)kp->arg = !boolval;
@@ -372,7 +354,6 @@ int param_set_bint(const char *val, const struct kernel_param *kp)
372 /* Match bool exactly, by re-using it. */ 354 /* Match bool exactly, by re-using it. */
373 boolkp = *kp; 355 boolkp = *kp;
374 boolkp.arg = &v; 356 boolkp.arg = &v;
375 boolkp.flags |= KPARAM_ISBOOL;
376 357
377 ret = param_set_bool(val, &boolkp); 358 ret = param_set_bool(val, &boolkp);
378 if (ret == 0) 359 if (ret == 0)