[PATCH v5 09/20] ACPI: platform_profile: Unregister class and sysfs group on module unload

Mario Limonciello posted 20 patches 1 year, 3 months ago
There is a newer version of this series
[PATCH v5 09/20] ACPI: platform_profile: Unregister class and sysfs group on module unload
Posted by Mario Limonciello 1 year, 3 months ago
The class and sysfs group are no longer needed when the platform profile
core is a module and unloaded.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/acpi/platform_profile.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c
index 652034b71ee9b..9caf070f77f6a 100644
--- a/drivers/acpi/platform_profile.c
+++ b/drivers/acpi/platform_profile.c
@@ -224,6 +224,13 @@ int platform_profile_remove(struct platform_profile_handler *pprof)
 }
 EXPORT_SYMBOL_GPL(platform_profile_remove);
 
+static void __exit platform_profile_exit(void)
+{
+	class_unregister(&platform_profile_class);
+	sysfs_remove_group(acpi_kobj, &platform_profile_group);
+}
+module_exit(platform_profile_exit);
+
 MODULE_AUTHOR("Mark Pearson <markpearson@lenovo.com>");
 MODULE_DESCRIPTION("ACPI platform profile sysfs interface");
 MODULE_LICENSE("GPL");
-- 
2.43.0
Re: [PATCH v5 09/20] ACPI: platform_profile: Unregister class and sysfs group on module unload
Posted by Armin Wolf 1 year, 3 months ago
Am 07.11.24 um 07:02 schrieb Mario Limonciello:

> The class and sysfs group are no longer needed when the platform profile
> core is a module and unloaded.
>
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
>   drivers/acpi/platform_profile.c | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c
> index 652034b71ee9b..9caf070f77f6a 100644
> --- a/drivers/acpi/platform_profile.c
> +++ b/drivers/acpi/platform_profile.c
> @@ -224,6 +224,13 @@ int platform_profile_remove(struct platform_profile_handler *pprof)
>   }
>   EXPORT_SYMBOL_GPL(platform_profile_remove);
>
> +static void __exit platform_profile_exit(void)
> +{
> +	class_unregister(&platform_profile_class);
> +	sysfs_remove_group(acpi_kobj, &platform_profile_group);

This will crash should the class still not exist.

I suggest you register the class and the legacy sysfs group during module initialization, and
add a is_visible() callback to the legacy sysfs group. Then you can use sysfs_update_group() to
update the visibility of the sysfs files when platform profiles come and go.

Also please squash this patch with the patch introducing the class infrastructure.

Thanks,
Armin Wolf

> +}
> +module_exit(platform_profile_exit);
> +
>   MODULE_AUTHOR("Mark Pearson <markpearson@lenovo.com>");
>   MODULE_DESCRIPTION("ACPI platform profile sysfs interface");
>   MODULE_LICENSE("GPL");