mtd: mtdswap: fix possible null dereference
authorMaxin B. John <john.maxin@nokia.com>
Fri, 20 May 2011 14:44:10 +0000 (15:44 +0100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Wed, 25 May 2011 01:11:44 +0000 (02:11 +0100)
This patch fixes the possible null dereference of the variable "oinfo"
Thanks to Coverity for spotting this.

Signed-off-by: Maxin B. John <john.maxin@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/mtdswap.c

index fed215c4cfa19a3676666dbef17c1e4ce8b8d8bc..fd7885327611d75d68a25e788fa7a44950109513 100644 (file)
@@ -1450,7 +1450,13 @@ static void mtdswap_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
        }
 
        oinfo = mtd->ecclayout;
-       if (!mtd->oobsize || !oinfo || oinfo->oobavail < MTDSWAP_OOBSIZE) {
+       if (!oinfo) {
+               printk(KERN_ERR "%s: mtd%d does not have OOB\n",
+                       MTDSWAP_PREFIX, mtd->index);
+               return;
+       }
+
+       if (!mtd->oobsize || oinfo->oobavail < MTDSWAP_OOBSIZE) {
                printk(KERN_ERR "%s: Not enough free bytes in OOB, "
                        "%d available, %zu needed.\n",
                        MTDSWAP_PREFIX, oinfo->oobavail, MTDSWAP_OOBSIZE);