diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index ac9bcfbbeee1c0f061b520592380584d34f773a1..08c5fba6db84bc0eeb818e150fed653e5b94b95e 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -640,14 +640,11 @@ int line_id(char **str, int *start_out, int *end_out)
 
 int line_remove(struct line *lines, unsigned int num, int n, char **error_out)
 {
-	int err;
-	char config[sizeof("conxxxx=none\0")];
-
-	sprintf(config, "%d=none", n);
-	err = line_setup(lines, num, config, error_out);
-	if (err >= 0)
-		err = 0;
-	return err;
+	if (n >= num) {
+		*error_out = "Device number out of range";
+		return -EINVAL;
+	}
+	return setup_one_line(lines, n, "none", INIT_ONE, error_out);
 }
 
 struct tty_driver *register_lines(struct line_driver *line_driver,