um: switch line_config() to setup_one_line()
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 9 Sep 2011 00:44:06 +0000 (20:44 -0400)
committerRichard Weinberger <richard@nod.at>
Sat, 24 Mar 2012 23:29:53 +0000 (00:29 +0100)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/drivers/line.c

index 08c5fba6db84bc0eeb818e150fed653e5b94b95e..b0022cf4efbb7f44e542e1c0a63b891cd0d09531 100644 (file)
@@ -572,22 +572,32 @@ int line_config(struct line *lines, unsigned int num, char *str,
 {
        struct line *line;
        char *new;
-       int n;
+       char *end;
+       int n, err;
 
        if (*str == '=') {
                *error_out = "Can't configure all devices from mconsole";
                return -EINVAL;
        }
 
-       new = kstrdup(str, GFP_KERNEL);
+       n = simple_strtoul(str, &end, 0);
+       if (*end++ != '=') {
+               *error_out = "Couldn't parse device number";
+               return -EINVAL;
+       }
+       if (n >= num) {
+               *error_out = "Device number out of range";
+               return -EINVAL;
+       }
+
+       new = kstrdup(end, GFP_KERNEL);
        if (new == NULL) {
                *error_out = "Failed to allocate memory";
                return -ENOMEM;
        }
-       n = line_setup(lines, num, new, error_out);
-       if (n < 0)
-               return n;
-
+       err = setup_one_line(lines, n, new, INIT_ONE, error_out);
+       if (err)
+               return err;
        line = &lines[n];
        return parse_chan_pair(line->init_str, line, n, opts, error_out);
 }