diff options
| author | Hauke Mehrtens <hauke@hauke-m.de> | 2012-07-26 11:45:52 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2012-07-26 15:37:57 -0400 |
| commit | 9dbf5f55f8d35ff9aedc75267f4e4042aaf89755 (patch) | |
| tree | 0fd4f4861f86f87a75ffd9e888923d9f79606cb1 /drivers/bcma | |
| parent | d8f1bd2ffcce6af1ace4f1efb327765144aa0755 (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')
| -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) | |||
| 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; | ||
| 500 | out: | ||
| 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 | ||
| 503 | int __init bcma_bus_scan_early(struct bcma_bus *bus, | 507 | int __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 | ||
| 558 | out: | ||
| 554 | if (bus->hosttype == BCMA_HOSTTYPE_SOC) | 559 | if (bus->hosttype == BCMA_HOSTTYPE_SOC) |
| 555 | iounmap(eromptr); | 560 | iounmap(eromptr); |
| 556 | 561 | ||
