[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240613-acpi-sysfs-groups-v1-2-665e0deb052a@weissschuh.net>
Date: Thu, 13 Jun 2024 22:15:33 +0200
From: Thomas Weißschuh <linux@...ssschuh.net>
To: "Rafael J. Wysocki" <rafael@...nel.org>, Len Brown <lenb@...nel.org>,
Robert Moore <robert.moore@...el.com>
Cc: linux-acpi@...r.kernel.org, linux-kernel@...r.kernel.org,
acpica-devel@...ts.linux.dev,
Thomas Weißschuh <linux@...ssschuh.net>
Subject: [PATCH 2/5] ACPI: sysfs: use device lifecycle for _STR result
The string assigned to dev->pnp.str effectively shares the lifetime of
the device. Use devm_-APIs to avoid a manual cleanup path.
This will be useful when the attributes themselves will be managed by
the device core.
Signed-off-by: Thomas Weißschuh <linux@...ssschuh.net>
---
drivers/acpi/device_sysfs.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/acpi/device_sysfs.c b/drivers/acpi/device_sysfs.c
index 4bedbe8f57ed..d0ca159d93e1 100644
--- a/drivers/acpi/device_sysfs.c
+++ b/drivers/acpi/device_sysfs.c
@@ -494,7 +494,7 @@ static ssize_t status_show(struct device *dev, struct device_attribute *attr,
}
static DEVICE_ATTR_RO(status);
-static const char *acpi_device_str(struct acpi_device *dev)
+static const char *devm_acpi_device_str(struct acpi_device *dev)
{
struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
union acpi_object *str_obj;
@@ -522,7 +522,7 @@ static const char *acpi_device_str(struct acpi_device *dev)
buf, sizeof(buf) - 1);
buf[result++] = '\0';
- ret = kstrdup(buf, GFP_KERNEL);
+ ret = devm_kstrdup(&dev->dev, buf, GFP_KERNEL);
kfree(buffer.pointer);
return ret;
@@ -558,7 +558,7 @@ int acpi_device_setup_files(struct acpi_device *dev)
/*
* If device has _STR, 'description' file is created
*/
- dev->pnp.str = acpi_device_str(dev);
+ dev->pnp.str = devm_acpi_device_str(dev);
if (dev->pnp.str) {
result = device_create_file(&dev->dev, &dev_attr_description);
if (result)
@@ -632,10 +632,8 @@ void acpi_device_remove_files(struct acpi_device *dev)
/*
* If device has _STR, remove 'description' file
*/
- if (acpi_has_method(dev->handle, "_STR")) {
- kfree(dev->pnp.str);
+ if (acpi_has_method(dev->handle, "_STR"))
device_remove_file(&dev->dev, &dev_attr_description);
- }
/*
* If device has _EJ0, remove 'eject' file.
*/
--
2.45.2
Powered by blists - more mailing lists