ACPI: platform_profile: Use guard(mutex) for register/unregister
authorMario Limonciello <mario.limonciello@amd.com>
Fri, 6 Dec 2024 03:19:04 +0000 (21:19 -0600)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 10 Dec 2024 17:17:57 +0000 (19:17 +0200)
guard(mutex) can be used to automatically release mutexes when going
out of scope.

Tested-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Tested-by: Matthew Schwartz <matthew.schwartz@linux.dev>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Armin Wolf <W_Armin@gmx.de>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20241206031918.1537-9-mario.limonciello@amd.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/acpi/platform_profile.c

index 45ffd85a71dd5be005c3ede33fc55abd133700af..9729543df6333e48d09301f7d2bef55ac82c3fd0 100644 (file)
@@ -184,32 +184,26 @@ int platform_profile_register(struct platform_profile_handler *pprof)
                return -EINVAL;
        }
 
-       mutex_lock(&profile_lock);
+       guard(mutex)(&profile_lock);
        /* We can only have one active profile */
-       if (cur_profile) {
-               mutex_unlock(&profile_lock);
+       if (cur_profile)
                return -EEXIST;
-       }
 
        err = sysfs_create_group(acpi_kobj, &platform_profile_group);
-       if (err) {
-               mutex_unlock(&profile_lock);
+       if (err)
                return err;
-       }
 
        cur_profile = pprof;
-       mutex_unlock(&profile_lock);
        return 0;
 }
 EXPORT_SYMBOL_GPL(platform_profile_register);
 
 int platform_profile_remove(struct platform_profile_handler *pprof)
 {
-       sysfs_remove_group(acpi_kobj, &platform_profile_group);
+       guard(mutex)(&profile_lock);
 
-       mutex_lock(&profile_lock);
+       sysfs_remove_group(acpi_kobj, &platform_profile_group);
        cur_profile = NULL;
-       mutex_unlock(&profile_lock);
        return 0;
 }
 EXPORT_SYMBOL_GPL(platform_profile_remove);