This patch adds missing apei_resources_fini and
plugs several tiny memory leaks.

Signed-off-by: Konstantin Khlebnikov <khlebni...@yandex-team.ru>
---
 drivers/acpi/apei/apei-base.c |    2 ++
 drivers/acpi/apei/einj.c      |    7 +++----
 drivers/acpi/apei/erst.c      |    1 +
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/apei/apei-base.c b/drivers/acpi/apei/apei-base.c
index a85ac07f3da3..b9a5418e6938 100644
--- a/drivers/acpi/apei/apei-base.c
+++ b/drivers/acpi/apei/apei-base.c
@@ -497,6 +497,7 @@ int apei_resources_request(struct apei_resources *resources,
        rc = apei_resources_sub(resources, &nvs_resources);
        if (rc)
                goto nvs_res_fini;
+       apei_resources_fini(&nvs_resources);
 
        if (arch_apei_filter_addr) {
                apei_resources_init(&arch_res);
@@ -506,6 +507,7 @@ int apei_resources_request(struct apei_resources *resources,
                rc = apei_resources_sub(resources, &arch_res);
                if (rc)
                        goto arch_res_fini;
+               apei_resources_fini(&arch_res);
        }
 
        rc = -EINVAL;
diff --git a/drivers/acpi/apei/einj.c b/drivers/acpi/apei/einj.c
index a095d4f858da..ed02d9da4a3e 100644
--- a/drivers/acpi/apei/einj.c
+++ b/drivers/acpi/apei/einj.c
@@ -379,10 +379,9 @@ static int __einj_error_trigger(u64 trigger_paddr, u32 
type,
                        rc = apei_resources_add(&addr_resources,
                                trigger_param_region->address,
                                trigger_param_region->bit_width/8, true);
-                       if (rc)
-                               goto out_fini;
-                       rc = apei_resources_sub(&trigger_resources,
-                                       &addr_resources);
+                       if (!rc)
+                               rc = apei_resources_sub(&trigger_resources,
+                                                       &addr_resources);
                }
                apei_resources_fini(&addr_resources);
                if (rc)
diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
index 3670bbab57a3..41ceeae3f6aa 100644
--- a/drivers/acpi/apei/erst.c
+++ b/drivers/acpi/apei/erst.c
@@ -1190,6 +1190,7 @@ static int __init erst_init(void)
        if (!erst_erange.vaddr)
                goto err_release_erange;
 
+       apei_resources_fini(&erst_resources);
        pr_info(
        "Error Record Serialization Table (ERST) support is initialized.\n");
 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to