Commit 92b633a8 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Brian Norris

mtd: physmap_of: fix potential NULL dereference

On device remove, when testing the cmtd field of an of_flash
struct to decide whether it is a concatenated device or not,
we get a false positive on cmtd == NULL, and dereference it
subsequently. This may occur if of_flash_remove() is called
from the cleanup path of of_flash_probe().

Instead, test for NULL first, and only then perform the test
for a concatenated device.
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
parent 58c81957
...@@ -47,14 +47,12 @@ static int of_flash_remove(struct platform_device *dev) ...@@ -47,14 +47,12 @@ static int of_flash_remove(struct platform_device *dev)
return 0; return 0;
dev_set_drvdata(&dev->dev, NULL); dev_set_drvdata(&dev->dev, NULL);
if (info->cmtd != info->list[0].mtd) { if (info->cmtd) {
mtd_device_unregister(info->cmtd); mtd_device_unregister(info->cmtd);
if (info->cmtd != info->list[0].mtd)
mtd_concat_destroy(info->cmtd); mtd_concat_destroy(info->cmtd);
} }
if (info->cmtd)
mtd_device_unregister(info->cmtd);
for (i = 0; i < info->list_size; i++) { for (i = 0; i < info->list_size; i++) {
if (info->list[i].mtd) if (info->list[i].mtd)
map_destroy(info->list[i].mtd); map_destroy(info->list[i].mtd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment