From 12fd0c3638b8d0dc771369f02f281dc75e2dd15e Mon Sep 17 00:00:00 2001 From: rajkosto Date: Sat, 16 Oct 2010 18:56:31 +0200 Subject: [PATCH] htcleo: avoid divide by zero on len=0 ooblen=0 in nand driver --- drivers/mtd/devices/htcleo_nand.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/devices/htcleo_nand.c b/drivers/mtd/devices/htcleo_nand.c index 689f086a..07dc26c3 100755 --- a/drivers/mtd/devices/htcleo_nand.c +++ b/drivers/mtd/devices/htcleo_nand.c @@ -554,7 +554,12 @@ static int msm_nand_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_o } } - if (oob_count > 0 && ops->ooboffs != 0) + if (!readdata && !readoob) + { + pr_err("%s: nothing to do\n", __func__); + return -EINVAL; + } + if (readoob && ops->ooboffs != 0) { pr_err("%s: unsupported ops->ooboffs, %d\n", __func__, ops->ooboffs); return -EINVAL; @@ -1106,7 +1111,12 @@ msm_nand_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops) } } - if (oob_count != 0 && ops->ooboffs != 0) + if (!writedata && !writeoob) + { + pr_err("%s: nothing to do\n", __func__); + return -EINVAL; + } + if (writeoob && ops->ooboffs != 0) { pr_err("%s: unsupported ops->ooboffs, %d\n", __func__, ops->ooboffs); return -EINVAL;