027-bcma-add-missing-iounmap-on-error-path.patch 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. --- a/drivers/bcma/scan.c
  2. +++ b/drivers/bcma/scan.c
  3. @@ -462,8 +462,10 @@ int bcma_bus_scan(struct bcma_bus *bus)
  4. while (eromptr < eromend) {
  5. struct bcma_device *other_core;
  6. struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL);
  7. - if (!core)
  8. - return -ENOMEM;
  9. + if (!core) {
  10. + err = -ENOMEM;
  11. + goto out;
  12. + }
  13. INIT_LIST_HEAD(&core->list);
  14. core->bus = bus;
  15. @@ -478,7 +480,7 @@ int bcma_bus_scan(struct bcma_bus *bus)
  16. } else if (err == -ESPIPE) {
  17. break;
  18. }
  19. - return err;
  20. + goto out;
  21. }
  22. core->core_index = core_num++;
  23. @@ -494,10 +496,12 @@ int bcma_bus_scan(struct bcma_bus *bus)
  24. list_add_tail(&core->list, &bus->cores);
  25. }
  26. + err = 0;
  27. +out:
  28. if (bus->hosttype == BCMA_HOSTTYPE_SOC)
  29. iounmap(eromptr);
  30. - return 0;
  31. + return err;
  32. }
  33. int __init bcma_bus_scan_early(struct bcma_bus *bus,
  34. @@ -537,7 +541,7 @@ int __init bcma_bus_scan_early(struct bc
  35. else if (err == -ESPIPE)
  36. break;
  37. else if (err < 0)
  38. - return err;
  39. + goto out;
  40. core->core_index = core_num++;
  41. bus->nr_cores++;
  42. @@ -551,6 +555,7 @@ int __init bcma_bus_scan_early(struct bc
  43. break;
  44. }
  45. +out:
  46. if (bus->hosttype == BCMA_HOSTTYPE_SOC)
  47. iounmap(eromptr);