aboutsummaryrefslogtreecommitdiffstats
path: root/fs/yaffs2/yaffs_mtdif.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/yaffs2/yaffs_mtdif.c')
-rw-r--r--fs/yaffs2/yaffs_mtdif.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/yaffs2/yaffs_mtdif.c b/fs/yaffs2/yaffs_mtdif.c
index 4ff5741f3983..054e251a2c18 100644
--- a/fs/yaffs2/yaffs_mtdif.c
+++ b/fs/yaffs2/yaffs_mtdif.c
@@ -242,17 +242,25 @@ struct mtd_info * yaffs_get_mtd_device(dev_t sdev)
{
struct mtd_info *mtd;
- mtd = yaffs_get_mtd_device(sdev);
-
/* Check it's an mtd device..... */
if (MAJOR(sdev) != MTD_BLOCK_MAJOR)
return NULL; /* This isn't an mtd device */
+ /* Get the device */
+ mtd = get_mtd_device(NULL, MINOR(sdev));
+ if (IS_ERR_OR_NULL(mtd)) {
+ yaffs_trace(YAFFS_TRACE_ALWAYS,
+ "yaffs: MTD device %u either not valid or unavailable",
+ MINOR(sdev));
+ return NULL;
+ }
+
/* Check it's NAND */
if (mtd->type != MTD_NANDFLASH) {
yaffs_trace(YAFFS_TRACE_ALWAYS,
"yaffs: MTD device is not NAND it's type %d",
mtd->type);
+ put_mtd_device(mtd);
return NULL;
}