summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/maps
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@bootlin.com>2018-10-19 09:49:00 +0200
committerBoris Brezillon <boris.brezillon@bootlin.com>2018-11-05 22:24:05 +0100
commit1e4f42084910067b2d37002afb6d1d1413552e1c (patch)
tree8f8582ddc239b6b4a4705fe729aeaffecc6b24d3 /drivers/mtd/maps
parent51b436a2420e32258f78f0d7a53c8ad1c8569d3b (diff)
downloadlinux-0-day-1e4f42084910067b2d37002afb6d1d1413552e1c.tar.gz
linux-0-day-1e4f42084910067b2d37002afb6d1d1413552e1c.tar.xz
mtd: maps: physmap: Check mtd_device_{parse_register, unregister}() ret code
mtd_device_parse_register() and mtd_device_unregister() can fail, check their return code and propagate the error to the upper layer if needed. Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com> Reviewed-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Acked-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/mtd/maps')
-rw-r--r--drivers/mtd/maps/physmap.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
index 86679d149a491..9b34223c46355 100644
--- a/drivers/mtd/maps/physmap.c
+++ b/drivers/mtd/maps/physmap.c
@@ -35,7 +35,7 @@ static int physmap_flash_remove(struct platform_device *dev)
{
struct physmap_flash_info *info;
struct physmap_flash_data *physmap_data;
- int i;
+ int i, err;
info = platform_get_drvdata(dev);
if (info == NULL)
@@ -44,7 +44,10 @@ static int physmap_flash_remove(struct platform_device *dev)
physmap_data = dev_get_platdata(&dev->dev);
if (info->cmtd) {
- mtd_device_unregister(info->cmtd);
+ err = mtd_device_unregister(info->cmtd);
+ if (err)
+ return err;
+
if (info->cmtd != info->mtds[0])
mtd_concat_destroy(info->cmtd);
}
@@ -194,8 +197,12 @@ static int physmap_flash_probe(struct platform_device *dev)
part_types = physmap_data->part_probe_types ? : part_probe_types;
- mtd_device_parse_register(info->cmtd, part_types, NULL,
- physmap_data->parts, physmap_data->nr_parts);
+ err = mtd_device_parse_register(info->cmtd, part_types, NULL,
+ physmap_data->parts,
+ physmap_data->nr_parts);
+ if (err)
+ goto err_out;
+
return 0;
err_out: