[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <10789244.nUPlyArG6x@rafael.j.wysocki>
Date: Tue, 20 Jan 2026 16:44:23 +0100
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Hans de Goede <hansg@...nel.org>,
Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
Cc: LKML <linux-kernel@...r.kernel.org>,
Linux ACPI <linux-acpi@...r.kernel.org>,
Kenneth Chan <kenneth.t.chan@...il.com>, platform-driver-x86@...r.kernel.org,
Azael Avalos <coproscefalo@...il.com>,
Matthew Garrett <matthew.garrett@...ula.com>
Subject:
[PATCH v1 2/2] platform/x86: toshiba_haps: Fix memory leaks in add/remove
routines
From: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
toshiba_haps_add() leaks the haps object allocated by it if it returns
an error after allocating that object successfully.
toshiba_haps_remove() does not free the object pointed to by
toshiba_haps before clearing that pointer, so it becomes unreachable
allocated memory.
Address these memory leaks by freeing the memory in question as
appropriate.
Fixes: 23d0ba0c908a ("platform/x86: Toshiba HDD Active Protection Sensor")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
---
drivers/platform/x86/toshiba_haps.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
--- a/drivers/platform/x86/toshiba_haps.c
+++ b/drivers/platform/x86/toshiba_haps.c
@@ -142,8 +142,8 @@ static void toshiba_haps_remove(struct a
{
sysfs_remove_group(&device->dev.kobj, &haps_attr_group);
- if (toshiba_haps)
- toshiba_haps = NULL;
+ kfree(toshiba_haps);
+ toshiba_haps = NULL;
}
/* Helper function */
@@ -195,15 +195,20 @@ static int toshiba_haps_add(struct acpi_
/* Set the protection level, currently at level 2 (Medium) */
ret = toshiba_haps_protection_level(acpi_dev->handle, 2);
if (ret != 0)
- return ret;
+ goto err;
ret = sysfs_create_group(&acpi_dev->dev.kobj, &haps_attr_group);
if (ret)
- return ret;
+ goto err;
toshiba_haps = haps;
return 0;
+
+err:
+ kfree(haps);
+
+ return ret;
}
#ifdef CONFIG_PM_SLEEP
Powered by blists - more mailing lists