mtd: Fix kernel NULL pointer dereference in physmap.c
authorH Hartley Sweeten <hartleys@visionengravers.com>
Mon, 19 Oct 2009 17:31:46 +0000 (13:31 -0400)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Tue, 20 Oct 2009 00:36:04 +0000 (09:36 +0900)
commit4b56ffcacee937a85bf39e14872dd141e23ee85f
treeda435281a3b348c2ed89d1f473bd0f78a1761069
parent2d098a725333990d265dfe4754d1b63032c35afb
mtd: Fix kernel NULL pointer dereference in physmap.c

During the probe for physmap platform flash devices there are a
number error exit conditions that all do a goto err_out which
then calls physmap_flash_remove().  In that function one of the
cleanup steps is:

#ifdef CONFIG_MTD_CONCAT
if (info->cmtd != info->mtd[0])
mtd_concat_destroy(info->cmtd);
#endif

This test will succeed since info->cmtd == NULL and info->mtd[0] is
valid.

Fix this by exiting the remove function when info->cmtd == NULL.

Also, cleanup the #ifdef CONFIG_MTD_PARTITIONS stuff by using
mtd_has_partitions().

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/maps/physmap.c