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 <joh...@akamai.com>
---
 drivers/acpi/apei/apei-base.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/apei/apei-base.c b/drivers/acpi/apei/apei-base.c
index a2c8d7a..da370e1 100644
--- a/drivers/acpi/apei/apei-base.c
+++ b/drivers/acpi/apei/apei-base.c
@@ -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;
-- 
1.7.9.5

Reply via email to