diff options
Diffstat (limited to 'drivers/bcma/scan.c')
| -rw-r--r-- | drivers/bcma/scan.c | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/bcma/scan.c b/drivers/bcma/scan.c index cad99485768..3a2f672db9a 100644 --- a/drivers/bcma/scan.c +++ b/drivers/bcma/scan.c @@ -399,15 +399,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++;  |