ACPI / APEI: Fix leaked resources
authorJosh Hunt <johunt@akamai.com>
Tue, 8 Mar 2016 15:52:11 +0000 (10:52 -0500)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 10 Mar 2016 23:13:25 +0000 (00:13 +0100)
We leak the NVS and arch resources (if used), in apei_resources_request.
They are allocated to make sure we exclude them from the APEI resources,
but they are never freed at the end of the function. Free them now.

Signed-off-by: Josh Hunt <johunt@akamai.com>
Reviewed-by: Chen, Gong <gong.chen@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/apei/apei-base.c

index a2c8d7adb6eb5a47554708032d30b4b34bbf2a62..da370e1d31f4fe922510e9ba5adc7504b9e859f9 100644 (file)
@@ -536,7 +536,8 @@ int apei_resources_request(struct apei_resources *resources,
                goto err_unmap_ioport;
        }
 
-       return 0;
+       goto arch_res_fini;
+
 err_unmap_ioport:
        list_for_each_entry(res, &resources->ioport, list) {
                if (res == res_bak)
@@ -551,7 +552,8 @@ err_unmap_iomem:
                release_mem_region(res->start, res->end - res->start);
        }
 arch_res_fini:
-       apei_resources_fini(&arch_res);
+       if (arch_apei_filter_addr)
+               apei_resources_fini(&arch_res);
 nvs_res_fini:
        apei_resources_fini(&nvs_resources);
        return rc;