[MTD] Missing check on kmalloc return in INFTL mount.
authorDavid Woodhouse <dwmw2@infradead.org>
Mon, 8 Aug 2005 08:56:22 +0000 (09:56 +0100)
committerThomas Gleixner <tglx@mtd.linutronix.de>
Sun, 6 Nov 2005 19:14:49 +0000 (20:14 +0100)
Signed-off-by: Youssef Hmamouche <hyoussef@gmail.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/mtd/inftlmount.c

index b5dda47395a71db2f3db02601e9722a73fc98edc..e066445320a3e35be1d988b8a255387bdd724eca 100644 (file)
@@ -8,7 +8,7 @@
  * Author: Fabrice Bellard (fabrice.bellard@netgem.com) 
  * Copyright (C) 2000 Netgem S.A.
  *
- * $Id: inftlmount.c,v 1.16 2004/11/22 13:50:53 kalev Exp $
+ * $Id: inftlmount.c,v 1.17 2005/08/08 08:56:19 dwmw2 Exp $
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@
 #include <linux/mtd/inftl.h>
 #include <linux/mtd/compatmac.h>
 
-char inftlmountrev[]="$Revision: 1.16 $";
+char inftlmountrev[]="$Revision: 1.17 $";
 
 /*
  * find_boot_record: Find the INFTL Media Header and its Spare copy which
@@ -563,7 +563,7 @@ int INFTL_mount(struct INFTLrecord *s)
        /* Search for INFTL MediaHeader and Spare INFTL Media Header */
        if (find_boot_record(s) < 0) {
                printk(KERN_WARNING "INFTL: could not find valid boot record?\n");
-               return -1;
+               return -ENXIO;
        }
 
        /* Init the logical to physical table */
@@ -574,6 +574,11 @@ int INFTL_mount(struct INFTLrecord *s)
 
        /* Temporary buffer to store ANAC numbers. */
        ANACtable = kmalloc(s->nb_blocks * sizeof(u8), GFP_KERNEL);
+       if (!ANACtable) {
+               printk(KERN_ERR "INFTL: Out of memory.\n");
+               return -ENOMEM;
+       }
+               
        memset(ANACtable, 0, s->nb_blocks);
 
        /*