* 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;
 }