aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Krause <Martin.Krause@tqs.de>2010-06-22 09:00:19 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-08-02 04:04:20 -0400
commite1d0fe3cddf2306e3ac32569aa152f1909c9b46e (patch)
tree229bcc4a8cbacb723b6656f588ad5dc887a13b29
parent24cc7b8a2a48a5707637e918a51ea547efe24892 (diff)
mtd: mtdconcat: fix bug with uninitialized lock and unlock functions
Test if a lock or unlock function is present (pointer not NULL) before calling it, to prevent a kernel dump. Artem: removed extra blank lines Signed-off-by: Martin Krause <martin.krause@tqs.de> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--drivers/mtd/mtdconcat.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index 7e075621bbf4..4567bc373780 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -540,10 +540,12 @@ static int concat_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
540 else 540 else
541 size = len; 541 size = len;
542 542
543 err = subdev->lock(subdev, ofs, size); 543 if (subdev->lock) {
544 544 err = subdev->lock(subdev, ofs, size);
545 if (err) 545 if (err)
546 break; 546 break;
547 } else
548 err = -EOPNOTSUPP;
547 549
548 len -= size; 550 len -= size;
549 if (len == 0) 551 if (len == 0)
@@ -578,10 +580,12 @@ static int concat_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
578 else 580 else
579 size = len; 581 size = len;
580 582
581 err = subdev->unlock(subdev, ofs, size); 583 if (subdev->unlock) {
582 584 err = subdev->unlock(subdev, ofs, size);
583 if (err) 585 if (err)
584 break; 586 break;
587 } else
588 err = -EOPNOTSUPP;
585 589
586 len -= size; 590 len -= size;
587 if (len == 0) 591 if (len == 0)