Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e58a66d8 authored by Anton Prins's avatar Anton Prins Committed by Artem Bityutskiy
Browse files

mtd: physmap_of: error checking to prevent a NULL pointer dereference



This patch solves a NULL pointer dereference, this may occur if the tuple
is not mappable (jumps to continue in the for-loop). Out of the loop
possible results are:
- info->list_size == 0  if no of the tuples is mappable
- info->list_size == 1
- info->list_size > 1
If no one of the supplied tuples is mappable (info->list_size == 0) and
info->cmtd will not be set. But it is used in mtd_device_parse_register, OOPS!
actually it should generate an error in this case!

Signed-off-by: default avatarAnton Prins <anton.prins@nl.bosch.com>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
parent 6c810f90
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -285,6 +285,7 @@ static int of_flash_probe(struct platform_device *dev)
	}
	}


	err = 0;
	err = 0;
	info->cmtd = NULL;
	if (info->list_size == 1) {
	if (info->list_size == 1) {
		info->cmtd = info->list[0].mtd;
		info->cmtd = info->list[0].mtd;
	} else if (info->list_size > 1) {
	} else if (info->list_size > 1) {
@@ -293,9 +294,10 @@ static int of_flash_probe(struct platform_device *dev)
		 */
		 */
		info->cmtd = mtd_concat_create(mtd_list, info->list_size,
		info->cmtd = mtd_concat_create(mtd_list, info->list_size,
					       dev_name(&dev->dev));
					       dev_name(&dev->dev));
	}
	if (info->cmtd == NULL)
	if (info->cmtd == NULL)
		err = -ENXIO;
		err = -ENXIO;
	}

	if (err)
	if (err)
		goto err_out;
		goto err_out;