--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -642,8 +642,12 @@ struct mtd_info *mtd_concat_create(struc
 		concat->mtd._writev = concat_writev;
 	if (subdev[0]->_read_oob)
 		concat->mtd._read_oob = concat_read_oob;
+	else
+		concat->mtd._read = concat_read;
 	if (subdev[0]->_write_oob)
 		concat->mtd._write_oob = concat_write_oob;
+	else
+		concat->mtd._write = concat_write;
 	if (subdev[0]->_block_isbad)
 		concat->mtd._block_isbad = concat_block_isbad;
 	if (subdev[0]->_block_markbad)
@@ -701,8 +705,6 @@ struct mtd_info *mtd_concat_create(struc
 	concat->mtd.name = name;
 
 	concat->mtd._erase = concat_erase;
-	concat->mtd._read = concat_read;
-	concat->mtd._write = concat_write;
 	concat->mtd._sync = concat_sync;
 	concat->mtd._lock = concat_lock;
 	concat->mtd._unlock = concat_unlock;
