[PATCH] platform/x86: think-lmi: Keep pending save state on failure
Thorsten Blum <[email protected]>
| Newsgroups | org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
In save_settings_store(), the opcode and legacy password paths do not
check if saving BIOS settings failed, but instead unconditionally clear
save_required and set reboot_required, losing the pending save state.
Check the save result in those paths too.
Fixes: 318d97849fc2 ("platform/x86: think-lmi: Add bulk save feature")
Cc: [email protected]
Signed-off-by: Thorsten Blum <[email protected]>
---
drivers/platform/x86/lenovo/think-lmi.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/platform/x86/lenovo/think-lmi.c b/drivers/platform/x86/lenovo/think-lmi.c
index e215e86e3db7..cc0a85d1b832 100644
--- a/drivers/platform/x86/lenovo/think-lmi.c
+++ b/drivers/platform/x86/lenovo/think-lmi.c
@@ -1347,6 +1347,8 @@ static ssize_t save_settings_store(struct kobject *kobj, struct kobj_attribute *
goto out;
}
ret = tlmi_save_bios_settings("");
+ if (ret)
+ goto out;
} else { /* old non-opcode based authentication method (deprecated) */
if (tlmi_priv.pwd_admin->pwd_enabled && tlmi_priv.pwd_admin->password[0]) {
auth_str = kasprintf(GFP_KERNEL, "%s,%s,%s;",
@@ -1363,6 +1365,8 @@ static ssize_t save_settings_store(struct kobject *kobj, struct kobj_attribute *
ret = tlmi_save_bios_settings(auth_str);
else
ret = tlmi_save_bios_settings("");
+ if (ret)
+ goto out;
}
tlmi_priv.save_required = false;
tlmi_priv.reboot_required = true;