ARM: 7384/1: ThumbEE: Disable userspace TEEHBR access for !CONFIG_ARM_THUMBEE
[linux-flexiantxendom0.git] / kernel / params.c
index 65aae11..8377693 100644 (file)
@@ -94,7 +94,7 @@ static int parse_one(char *param,
                     char *val,
                     const struct kernel_param *params,
                     unsigned num_params,
-                    int (*handle_unknown)(char *param, char *val))
+                    int (*handle_arg)(char *param, char *val, int known))
 {
        unsigned int i;
        int err;
@@ -105,6 +105,14 @@ static int parse_one(char *param,
                        /* No one handled NULL, so do it here. */
                        if (!val && params[i].ops->set != param_set_bool)
                                return -EINVAL;
+                       if (handle_arg) {
+                               int ret;
+                               DEBUGP("Valid argument: calling %p\n",
+                                      handle_arg);
+                               ret = handle_arg(param, val, 1);
+                               if (ret)
+                                       return ret;
+                       }
                        DEBUGP("They are equal!  Calling %p\n",
                               params[i].ops->set);
                        mutex_lock(&param_lock);
@@ -114,9 +122,9 @@ static int parse_one(char *param,
                }
        }
 
-       if (handle_unknown) {
-               DEBUGP("Unknown argument: calling %p\n", handle_unknown);
-               return handle_unknown(param, val);
+       if (handle_arg) {
+               DEBUGP("Unknown argument: calling %p\n", handle_arg);
+               return handle_arg(param, val, 0);
        }
 
        DEBUGP("Unknown argument `%s'\n", param);
@@ -180,7 +188,7 @@ int parse_args(const char *name,
               char *args,
               const struct kernel_param *params,
               unsigned num,
-              int (*unknown)(char *param, char *val))
+              int (*handle_arg)(char *param, char *val, int arg))
 {
        char *param, *val;
 
@@ -195,7 +203,7 @@ int parse_args(const char *name,
 
                args = next_arg(args, &param, &val);
                irq_was_disabled = irqs_disabled();
-               ret = parse_one(param, val, params, num, unknown);
+               ret = parse_one(param, val, params, num, handle_arg);
                if (irq_was_disabled && !irqs_disabled()) {
                        printk(KERN_WARNING "parse_args(): option '%s' enabled "
                                        "irq's!\n", param);