From fe9a6b002988372406baf5aeefc046677782365e Mon Sep 17 00:00:00 2001
From: Al Viro <viro@zeniv.linux.org.uk>
Date: Thu, 8 Sep 2011 20:44:06 -0400
Subject: [PATCH] um: switch line_config() to setup_one_line()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Richard Weinberger <richard@nod.at>
---
 arch/um/drivers/line.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 08c5fba6db84..b0022cf4efbb 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -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);
 }
-- 
2.20.1