bcma: add missing iounmap on error path
authorHauke Mehrtens <hauke@hauke-m.de>
Thu, 26 Jul 2012 15:45:52 +0000 (17:45 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 26 Jul 2012 19:37:57 +0000 (15:37 -0400)
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>
drivers/bcma/scan.c

index 5672b13d09516f0b257b7c3f704c868c8c5c30c4..8d0b57164018d7f14cdacccb3214bd6fe6008c3b 100644 (file)
@@ -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);