diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2012-07-26 19:45:52 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-07-26 23:37:57 +0400 |
commit | 9dbf5f55f8d35ff9aedc75267f4e4042aaf89755 (patch) | |
tree | 0fd4f4861f86f87a75ffd9e888923d9f79606cb1 /drivers/bcma/scan.c | |
parent | d8f1bd2ffcce6af1ace4f1efb327765144aa0755 (diff) | |
download | linux-9dbf5f55f8d35ff9aedc75267f4e4042aaf89755.tar.xz |
bcma: add missing iounmap on error path
This should fix the problem reported by Fengguang:
The coccinelle static checker emits these warnings:
drivers/bcma/scan.c:466:3-9: ERROR: missing iounmap; ioremap on line 451 and execution via conditional on line 465
drivers/bcma/scan.c:540:3-9: ERROR: missing iounmap; ioremap on line 515 and execution via conditional on line 539
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/bcma/scan.c')
-rw-r--r-- | drivers/bcma/scan.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/bcma/scan.c b/drivers/bcma/scan.c index 5672b13d0951..8d0b57164018 100644 --- a/drivers/bcma/scan.c +++ b/drivers/bcma/scan.c @@ -462,8 +462,10 @@ int bcma_bus_scan(struct bcma_bus *bus) while (eromptr < eromend) { struct bcma_device *other_core; struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL); - if (!core) - return -ENOMEM; + if (!core) { + err = -ENOMEM; + goto out; + } INIT_LIST_HEAD(&core->list); core->bus = bus; @@ -478,7 +480,7 @@ int bcma_bus_scan(struct bcma_bus *bus) } else if (err == -ESPIPE) { break; } - return err; + goto out; } core->core_index = core_num++; @@ -494,10 +496,12 @@ int bcma_bus_scan(struct bcma_bus *bus) list_add_tail(&core->list, &bus->cores); } + err = 0; +out: if (bus->hosttype == BCMA_HOSTTYPE_SOC) iounmap(eromptr); - return 0; + return err; } int __init bcma_bus_scan_early(struct bcma_bus *bus, @@ -537,7 +541,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus, else if (err == -ESPIPE) break; else if (err < 0) - return err; + goto out; core->core_index = core_num++; bus->nr_cores++; @@ -551,6 +555,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus, break; } +out: if (bus->hosttype == BCMA_HOSTTYPE_SOC) iounmap(eromptr); |