summaryrefslogtreecommitdiff
path: root/target/linux/generic/patches-3.3/027-bcma-add-missing-iounmap-on-error-path.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/patches-3.3/027-bcma-add-missing-iounmap-on-error-path.patch')
-rw-r--r--target/linux/generic/patches-3.3/027-bcma-add-missing-iounmap-on-error-path.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.3/027-bcma-add-missing-iounmap-on-error-path.patch b/target/linux/generic/patches-3.3/027-bcma-add-missing-iounmap-on-error-path.patch
new file mode 100644
index 0000000..dc8367b
--- /dev/null
+++ b/target/linux/generic/patches-3.3/027-bcma-add-missing-iounmap-on-error-path.patch
@@ -0,0 +1,55 @@
+--- a/drivers/bcma/scan.c
++++ b/drivers/bcma/scan.c
+@@ -462,8 +462,10 @@ int bcma_bus_scan(struct bcma_bus *bus)
+ while (eromptr < eromend) {
+ struct bcma_device *other_core;
+ struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL);
+- if (!core)
+- return -ENOMEM;
++ if (!core) {
++ err = -ENOMEM;
++ goto out;
++ }
+ INIT_LIST_HEAD(&core->list);
+ core->bus = bus;
+
+@@ -478,7 +480,7 @@ int bcma_bus_scan(struct bcma_bus *bus)
+ } else if (err == -ESPIPE) {
+ break;
+ }
+- return err;
++ goto out;
+ }
+
+ core->core_index = core_num++;
+@@ -494,10 +496,12 @@ int bcma_bus_scan(struct bcma_bus *bus)
+ list_add_tail(&core->list, &bus->cores);
+ }
+
++ err = 0;
++out:
+ if (bus->hosttype == BCMA_HOSTTYPE_SOC)
+ iounmap(eromptr);
+
+- return 0;
++ return err;
+ }
+
+ int __init bcma_bus_scan_early(struct bcma_bus *bus,
+@@ -537,7 +541,7 @@ int __init bcma_bus_scan_early(struct bc
+ else if (err == -ESPIPE)
+ break;
+ else if (err < 0)
+- return err;
++ goto out;
+
+ core->core_index = core_num++;
+ bus->nr_cores++;
+@@ -551,6 +555,7 @@ int __init bcma_bus_scan_early(struct bc
+ break;
+ }
+
++out:
+ if (bus->hosttype == BCMA_HOSTTYPE_SOC)
+ iounmap(eromptr);
+