diff options
author | Luis Henriques <henrix@camandro.org> | 2016-11-24 02:40:36 +0300 |
---|---|---|
committer | Brian Norris <computersforpeace@gmail.com> | 2016-12-01 05:30:24 +0300 |
commit | 3502fbcc25eb67db96fea35abe721c82aa1f4ff3 (patch) | |
tree | b2e83f7a028bf70f05b4c2c9756a4aff562570d1 /drivers/mtd/maps/sc520cdp.c | |
parent | 5fed67df878b598c3a4afdd4c09e9bea491651dd (diff) | |
download | linux-3502fbcc25eb67db96fea35abe721c82aa1f4ff3.tar.xz |
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>
Diffstat (limited to 'drivers/mtd/maps/sc520cdp.c')
-rw-r--r-- | drivers/mtd/maps/sc520cdp.c | 8 |
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; } |