diff options
author | Zahari Doychev <zahari.doychev@linux.com> | 2014-07-08 09:37:35 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-07-09 07:31:01 +0200 |
commit | 433135c85c521aa9119b8ad1343eb70973c58f21 (patch) | |
tree | f39242e452ff37447ad4f3d2f10c9a68b73cfdb2 /drivers | |
parent | 3f4e7adae9365aa08b5f87355bbb2ba370961304 (diff) | |
download | barebox-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.c | 6 |
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; |