diff options
| author | Luis Henriques <henrix@camandro.org> | 2016-11-23 23:40:36 +0000 | 
|---|---|---|
| committer | Brian Norris <computersforpeace@gmail.com> | 2016-11-30 18:30:24 -0800 | 
| commit | 3502fbcc25eb67db96fea35abe721c82aa1f4ff3 (patch) | |
| tree | b2e83f7a028bf70f05b4c2c9756a4aff562570d1 /drivers/mtd/maps | |
| parent | 5fed67df878b598c3a4afdd4c09e9bea491651dd (diff) | |
| download | linux-3502fbcc25eb67db96fea35abe721c82aa1f4ff3.tar.bz2 | |
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')
| -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;  		} |