summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorZahari Doychev <zahari.doychev@linux.com>2014-07-08 09:37:35 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-07-09 07:31:01 +0200
commit433135c85c521aa9119b8ad1343eb70973c58f21 (patch)
treef39242e452ff37447ad4f3d2f10c9a68b73cfdb2 /drivers
parent3f4e7adae9365aa08b5f87355bbb2ba370961304 (diff)
downloadbarebox-433135c85c521aa9119b8ad1343eb70973c58f21.tar.gz
barebox-433135c85c521aa9119b8ad1343eb70973c58f21.tar.xz
drivers/mtd: fix NULL pointer dereference in partition lock/unlock
Some mtd device does not support lock and unlock functions. Adding this check avoids crashing when mtd_part_lock/unlock are called for such devices. Signed-off-by: Zahari Doychev <zahari.doychev@linux.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mtd/partition.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mtd/partition.c b/drivers/mtd/partition.c
index 9b2b20ef5d..e393fa68f8 100644
--- a/drivers/mtd/partition.c
+++ b/drivers/mtd/partition.c
@@ -51,6 +51,9 @@ static int mtd_part_erase(struct mtd_info *mtd, struct erase_info *instr)
static int mtd_part_lock(struct mtd_info *mtd, loff_t offset, size_t len)
{
+ if (!mtd->master->lock)
+ return -ENOSYS;
+
if (!(mtd->flags & MTD_WRITEABLE))
return -EROFS;
@@ -64,6 +67,9 @@ static int mtd_part_lock(struct mtd_info *mtd, loff_t offset, size_t len)
static int mtd_part_unlock(struct mtd_info *mtd, loff_t offset, size_t len)
{
+ if (!mtd->master->unlock)
+ return -ENOSYS;
+
if (!(mtd->flags & MTD_WRITEABLE))
return -EROFS;