aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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