]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/x86: think-lmi: Create ksets consecutively
authorKurt Borja <kuurtb@gmail.com>
Mon, 30 Jun 2025 17:31:19 +0000 (14:31 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Jul 2025 13:57:50 +0000 (15:57 +0200)
commit 8dab34ca77293b409c3223636dde915a22656748 upstream.

Avoid entering tlmi_release_attr() in error paths if both ksets are not
yet created.

This is accomplished by initializing them side by side.

Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Cc: stable@vger.kernel.org
Signed-off-by: Kurt Borja <kuurtb@gmail.com>
Link: https://lore.kernel.org/r/20250630-lmi-fix-v3-1-ce4f81c9c481@gmail.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/platform/x86/think-lmi.c

index 462f7779daaa651f9d82f02050cacb9c7ff0a441..36ff64a7b6847ea4cf01f5efbf9a0fda1ea122b5 100644 (file)
@@ -827,6 +827,14 @@ static int tlmi_sysfs_init(void)
                goto fail_device_created;
        }
 
+       tlmi_priv.authentication_kset = kset_create_and_add("authentication", NULL,
+                                                           &tlmi_priv.class_dev->kobj);
+       if (!tlmi_priv.authentication_kset) {
+               kset_unregister(tlmi_priv.attribute_kset);
+               ret = -ENOMEM;
+               goto fail_device_created;
+       }
+
        for (i = 0; i < TLMI_SETTINGS_COUNT; i++) {
                /* Check if index is a valid setting - skip if it isn't */
                if (!tlmi_priv.setting[i])
@@ -863,12 +871,6 @@ static int tlmi_sysfs_init(void)
                        goto fail_create_attr;
        }
        /* Create authentication entries */
-       tlmi_priv.authentication_kset = kset_create_and_add("authentication", NULL,
-                                                               &tlmi_priv.class_dev->kobj);
-       if (!tlmi_priv.authentication_kset) {
-               ret = -ENOMEM;
-               goto fail_create_attr;
-       }
        tlmi_priv.pwd_admin->kobj.kset = tlmi_priv.authentication_kset;
        ret = kobject_add(&tlmi_priv.pwd_admin->kobj, NULL, "%s", "Admin");
        if (ret)