aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bcma/scan.c
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2012-07-26 11:45:52 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-07-26 15:37:57 -0400
commit9dbf5f55f8d35ff9aedc75267f4e4042aaf89755 (patch)
tree0fd4f4861f86f87a75ffd9e888923d9f79606cb1 /drivers/bcma/scan.c
parentd8f1bd2ffcce6af1ace4f1efb327765144aa0755 (diff)
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.c15
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)
462 while (eromptr < eromend) { 462 while (eromptr < eromend) {
463 struct bcma_device *other_core; 463 struct bcma_device *other_core;
464 struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL); 464 struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL);
465 if (!core) 465 if (!core) {
466 return -ENOMEM; 466 err = -ENOMEM;
467 goto out;
468 }
467 INIT_LIST_HEAD(&core->list); 469 INIT_LIST_HEAD(&core->list);
468 core->bus = bus; 470 core->bus = bus;
469 471
@@ -478,7 +480,7 @@ int bcma_bus_scan(struct bcma_bus *bus)
478 } else if (err == -ESPIPE) { 480 } else if (err == -ESPIPE) {
479 break; 481 break;
480 } 482 }
481 return err; 483 goto out;
482 } 484 }
483 485
484 core->core_index = core_num++; 486 core->core_index = core_num++;
@@ -494,10 +496,12 @@ int bcma_bus_scan(struct bcma_bus *bus)
494 list_add_tail(&core->list, &bus->cores); 496 list_add_tail(&core->list, &bus->cores);
495 } 497 }
496 498
499 err = 0;
500out:
497 if (bus->hosttype == BCMA_HOSTTYPE_SOC) 501 if (bus->hosttype == BCMA_HOSTTYPE_SOC)
498 iounmap(eromptr); 502 iounmap(eromptr);
499 503
500 return 0; 504 return err;
501} 505}
502 506
503int __init bcma_bus_scan_early(struct bcma_bus *bus, 507int __init bcma_bus_scan_early(struct bcma_bus *bus,
@@ -537,7 +541,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus,
537 else if (err == -ESPIPE) 541 else if (err == -ESPIPE)
538 break; 542 break;
539 else if (err < 0) 543 else if (err < 0)
540 return err; 544 goto out;
541 545
542 core->core_index = core_num++; 546 core->core_index = core_num++;
543 bus->nr_cores++; 547 bus->nr_cores++;
@@ -551,6 +555,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus,
551 break; 555 break;
552 } 556 }
553 557
558out:
554 if (bus->hosttype == BCMA_HOSTTYPE_SOC) 559 if (bus->hosttype == BCMA_HOSTTYPE_SOC)
555 iounmap(eromptr); 560 iounmap(eromptr);
556 561