lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 10 Jul 2015 14:58:32 +0300
From:	Konstantin Khlebnikov <khlebnikov@...dex-team.ru>
To:	linux-acpi@...r.kernel.org,
	"Chen, Gong" <gong.chen@...ux.intel.com>
Cc:	Tony Luck <tony.luck@...el.com>, linux-kernel@...r.kernel.org,
	Tomasz Nowicki <tomasz.nowicki@...aro.org>
Subject: [PATCH] acpi/apei: free lists of resources in einj and erst

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

Signed-off-by: Konstantin Khlebnikov <khlebnikov@...dex-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 majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ