diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 6ac133994f9416db623b48fc690d38955f425a02..0ed8105f9c118212ecfebfef2e5233423e663661 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -867,38 +867,26 @@ static void ltree_entry_ctor(struct kmem_cache *cache, void *obj)
  * find_mtd_device - open an MTD device by its name or number.
  * @mtd_dev: name or number of the device
  *
- * This function tries to open and MTD device with name @mtd_dev, and if it
- * fails, then it tries to interpret the @mtd_dev string as an ASCII-coded
- * integer and open an MTD device with this number. Returns MTD device
- * description object in case of success and a negative error code in case of
- * failure.
+ * This function tries to open and MTD device described by @mtd_dev string,
+ * which is first treated as an ASCII number, and if it is not true, it is
+ * treated as MTD device name. Returns MTD device description object in case of
+ * success and a negative error code in case of failure.
  */
 static struct mtd_info * __init open_mtd_device(const char *mtd_dev)
 {
 	struct mtd_info *mtd;
+	int mtd_num;
+	char *endp;
 
-	mtd = get_mtd_device_nm(mtd_dev);
-	if (IS_ERR(mtd)) {
-		int mtd_num;
-		char *endp;
-
-		if (PTR_ERR(mtd) != -ENODEV)
-			return mtd;
-
+	mtd_num = simple_strtoul(mtd_dev, &endp, 0);
+	if (*endp != '\0' || mtd_dev == endp) {
 		/*
-		 * Probably this is not MTD device name but MTD device number -
-		 * check this out.
+		 * This does not look like an ASCII integer, probably this is
+		 * MTD device name.
 		 */
-		mtd_num = simple_strtoul(mtd_dev, &endp, 0);
-		if (*endp != '\0' || mtd_dev == endp) {
-			ubi_err("incorrect MTD device: \"%s\"", mtd_dev);
-			return ERR_PTR(-ENODEV);
-		}
-
+		mtd = get_mtd_device_nm(mtd_dev);
+	} else
 		mtd = get_mtd_device(NULL, mtd_num);
-		if (IS_ERR(mtd))
-			return mtd;
-	}
 
 	return mtd;
 }