diff options
Diffstat (limited to 'drivers/bcma')
-rw-r--r-- | drivers/bcma/main.c | 4 | ||||
-rw-r--r-- | drivers/bcma/scan.c | 19 |
2 files changed, 12 insertions, 11 deletions
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index bcd1c01cde9e..b8379b90d045 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -179,10 +179,8 @@ int __devinit bcma_bus_register(struct bcma_bus *bus) err = bcma_sprom_get(bus); if (err == -ENOENT) { pr_err("No SPROM available\n"); - } else if (err) { + } else if (err) pr_err("Failed to get SPROM: %d\n", err); - return -ENOENT; - } /* Register found cores */ bcma_register_cores(bus); diff --git a/drivers/bcma/scan.c b/drivers/bcma/scan.c index 6621b2221b40..f94cccccfa56 100644 --- a/drivers/bcma/scan.c +++ b/drivers/bcma/scan.c @@ -415,15 +415,18 @@ int bcma_bus_scan(struct bcma_bus *bus) core->bus = bus; err = bcma_get_next_core(bus, &eromptr, NULL, core_num, core); - if (err == -ENODEV) { - core_num++; - continue; - } else if (err == -ENXIO) - continue; - else if (err == -ESPIPE) - break; - else if (err < 0) + if (err < 0) { + kfree(core); + if (err == -ENODEV) { + core_num++; + continue; + } else if (err == -ENXIO) { + continue; + } else if (err == -ESPIPE) { + break; + } return err; + } core->core_index = core_num++; bus->nr_cores++; |