summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis Henriques <henrix@camandro.org>2016-11-24 00:40:36 +0100
committerBrian Norris <computersforpeace@gmail.com>2016-12-01 03:30:24 +0100
commit3502fbcc25eb67db96fea35abe721c82aa1f4ff3 (patch)
treeb2e83f7a028bf70f05b4c2c9756a4aff562570d1
parentMerge tag 'spi-nor/for-4.10' of git://github.com/spi-nor/linux (diff)
downloadlinux-3502fbcc25eb67db96fea35abe721c82aa1f4ff3.tar.xz
linux-3502fbcc25eb67db96fea35abe721c82aa1f4ff3.zip
mtd: maps: add missing iounmap() in error path
This patch was triggered by the following Coccinelle error: ./drivers/mtd/maps/sc520cdp.c:246:3-9: \ ERROR: missing iounmap; ioremap on line 242 \ and execution via conditional on line 244 Since do_map_probe() is also invoked in this loop, it is also necessary to map_destroy() any initialised struct mtd_info. Signed-off-by: Luis Henriques <henrix@camandro.org> Reviewed-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
-rw-r--r--drivers/mtd/maps/sc520cdp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/mtd/maps/sc520cdp.c b/drivers/mtd/maps/sc520cdp.c
index 093edd51bdc7..9b1c13aa9f20 100644
--- a/drivers/mtd/maps/sc520cdp.c
+++ b/drivers/mtd/maps/sc520cdp.c
@@ -227,7 +227,7 @@ static void sc520cdp_setup_par(void)
static int __init init_sc520cdp(void)
{
- int i, devices_found = 0;
+ int i, j, devices_found = 0;
#ifdef REPROGRAM_PAR
/* reprogram PAR registers so flash appears at the desired addresses */
@@ -243,6 +243,12 @@ static int __init init_sc520cdp(void)
if (!sc520cdp_map[i].virt) {
printk("Failed to ioremap_nocache\n");
+ for (j = 0; j < i; j++) {
+ if (mymtd[j]) {
+ map_destroy(mymtd[j]);
+ iounmap(sc520cdp_map[j].virt);
+ }
+ }
return -EIO;
}