diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index d563dcd..8c2384f 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -793,11 +793,16 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[],     /* subdevices to c
        concat->mtd.erase = concat_erase;
        concat->mtd.read = concat_read;
        concat->mtd.write = concat_write;
-       concat->mtd.sync = concat_sync;
+       if (subdev[0]->sync)
+               concat->mtd.sync = concat_sync;
+       if (subdev[0]->lock)
        concat->mtd.lock = concat_lock;
+       if (subdev[0]->unlock)
        concat->mtd.unlock = concat_unlock;
-       concat->mtd.suspend = concat_suspend;
-       concat->mtd.resume = concat_resume;
+       if (subdev[0]->suspend)
+               concat->mtd.suspend = concat_suspend;
+       if (subdev[0]->resume)
+               concat->mtd.resume = concat_resume;
 

thank you
