mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-03 21:45:08 -04:00
platform/x86: think-lmi: improve check if BIOS account security enabled
Improve determination of whether authentication account is enabled by checking if either password or certificate is enabled. Renamed valid to pwd_enabled for better readability. Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca> Link: https://lore.kernel.org/r/20241024195536.6992-1-mpearson-lenovo@squebb.ca Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
committed by
Ilpo Järvinen
parent
a7d30cb75b
commit
b39e8ece93
@@ -391,7 +391,7 @@ static ssize_t is_enabled_show(struct kobject *kobj, struct kobj_attribute *attr
|
||||
{
|
||||
struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj);
|
||||
|
||||
return sysfs_emit(buf, "%d\n", setting->valid);
|
||||
return sysfs_emit(buf, "%d\n", setting->pwd_enabled || setting->cert_installed);
|
||||
}
|
||||
|
||||
static struct kobj_attribute auth_is_pass_set = __ATTR_RO(is_enabled);
|
||||
@@ -469,7 +469,7 @@ static ssize_t new_password_store(struct kobject *kobj,
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (tlmi_priv.pwd_admin->valid) {
|
||||
if (tlmi_priv.pwd_admin->pwd_enabled) {
|
||||
ret = tlmi_opcode_setting("WmiOpcodePasswordAdmin",
|
||||
tlmi_priv.pwd_admin->password);
|
||||
if (ret)
|
||||
@@ -777,7 +777,7 @@ static ssize_t certificate_store(struct kobject *kobj,
|
||||
new_cert, setting->signature);
|
||||
} else {
|
||||
/* This is a fresh install */
|
||||
if (!setting->valid || !setting->password[0]) {
|
||||
if (!setting->pwd_enabled || !setting->password[0]) {
|
||||
kfree(new_cert);
|
||||
return -EACCES;
|
||||
}
|
||||
@@ -1019,7 +1019,7 @@ static ssize_t current_value_store(struct kobject *kobj,
|
||||
* Workstation's require the opcode to be set before changing the
|
||||
* attribute.
|
||||
*/
|
||||
if (tlmi_priv.pwd_admin->valid && tlmi_priv.pwd_admin->password[0]) {
|
||||
if (tlmi_priv.pwd_admin->pwd_enabled && tlmi_priv.pwd_admin->password[0]) {
|
||||
ret = tlmi_opcode_setting("WmiOpcodePasswordAdmin",
|
||||
tlmi_priv.pwd_admin->password);
|
||||
if (ret)
|
||||
@@ -1042,7 +1042,7 @@ static ssize_t current_value_store(struct kobject *kobj,
|
||||
else
|
||||
ret = tlmi_save_bios_settings("");
|
||||
} else { /* old non-opcode based authentication method (deprecated) */
|
||||
if (tlmi_priv.pwd_admin->valid && tlmi_priv.pwd_admin->password[0]) {
|
||||
if (tlmi_priv.pwd_admin->pwd_enabled && tlmi_priv.pwd_admin->password[0]) {
|
||||
auth_str = kasprintf(GFP_KERNEL, "%s,%s,%s;",
|
||||
tlmi_priv.pwd_admin->password,
|
||||
encoding_options[tlmi_priv.pwd_admin->encoding],
|
||||
@@ -1215,7 +1215,7 @@ static ssize_t save_settings_store(struct kobject *kobj, struct kobj_attribute *
|
||||
if (ret)
|
||||
goto out;
|
||||
} else if (tlmi_priv.opcode_support) {
|
||||
if (tlmi_priv.pwd_admin->valid && tlmi_priv.pwd_admin->password[0]) {
|
||||
if (tlmi_priv.pwd_admin->pwd_enabled && tlmi_priv.pwd_admin->password[0]) {
|
||||
ret = tlmi_opcode_setting("WmiOpcodePasswordAdmin",
|
||||
tlmi_priv.pwd_admin->password);
|
||||
if (ret)
|
||||
@@ -1223,7 +1223,7 @@ static ssize_t save_settings_store(struct kobject *kobj, struct kobj_attribute *
|
||||
}
|
||||
ret = tlmi_save_bios_settings("");
|
||||
} else { /* old non-opcode based authentication method (deprecated) */
|
||||
if (tlmi_priv.pwd_admin->valid && tlmi_priv.pwd_admin->password[0]) {
|
||||
if (tlmi_priv.pwd_admin->pwd_enabled && tlmi_priv.pwd_admin->password[0]) {
|
||||
auth_str = kasprintf(GFP_KERNEL, "%s,%s,%s;",
|
||||
tlmi_priv.pwd_admin->password,
|
||||
encoding_options[tlmi_priv.pwd_admin->encoding],
|
||||
@@ -1273,7 +1273,7 @@ static ssize_t debug_cmd_store(struct kobject *kobj, struct kobj_attribute *attr
|
||||
if (!new_setting)
|
||||
return -ENOMEM;
|
||||
|
||||
if (tlmi_priv.pwd_admin->valid && tlmi_priv.pwd_admin->password[0]) {
|
||||
if (tlmi_priv.pwd_admin->pwd_enabled && tlmi_priv.pwd_admin->password[0]) {
|
||||
auth_str = kasprintf(GFP_KERNEL, "%s,%s,%s;",
|
||||
tlmi_priv.pwd_admin->password,
|
||||
encoding_options[tlmi_priv.pwd_admin->encoding],
|
||||
@@ -1637,14 +1637,14 @@ static int tlmi_analyze(void)
|
||||
goto fail_clear_attr;
|
||||
|
||||
if (tlmi_priv.pwdcfg.core.password_state & TLMI_PAP_PWD)
|
||||
tlmi_priv.pwd_admin->valid = true;
|
||||
tlmi_priv.pwd_admin->pwd_enabled = true;
|
||||
|
||||
tlmi_priv.pwd_power = tlmi_create_auth("pop", "power-on");
|
||||
if (!tlmi_priv.pwd_power)
|
||||
goto fail_clear_attr;
|
||||
|
||||
if (tlmi_priv.pwdcfg.core.password_state & TLMI_POP_PWD)
|
||||
tlmi_priv.pwd_power->valid = true;
|
||||
tlmi_priv.pwd_power->pwd_enabled = true;
|
||||
|
||||
if (tlmi_priv.opcode_support) {
|
||||
tlmi_priv.pwd_system = tlmi_create_auth("smp", "system");
|
||||
@@ -1652,7 +1652,7 @@ static int tlmi_analyze(void)
|
||||
goto fail_clear_attr;
|
||||
|
||||
if (tlmi_priv.pwdcfg.core.password_state & TLMI_SMP_PWD)
|
||||
tlmi_priv.pwd_system->valid = true;
|
||||
tlmi_priv.pwd_system->pwd_enabled = true;
|
||||
|
||||
tlmi_priv.pwd_hdd = tlmi_create_auth("hdd", "hdd");
|
||||
if (!tlmi_priv.pwd_hdd)
|
||||
@@ -1670,7 +1670,7 @@ static int tlmi_analyze(void)
|
||||
/* Check if PWD is configured and set index to first drive found */
|
||||
if (tlmi_priv.pwdcfg.ext.hdd_user_password ||
|
||||
tlmi_priv.pwdcfg.ext.hdd_master_password) {
|
||||
tlmi_priv.pwd_hdd->valid = true;
|
||||
tlmi_priv.pwd_hdd->pwd_enabled = true;
|
||||
if (tlmi_priv.pwdcfg.ext.hdd_master_password)
|
||||
tlmi_priv.pwd_hdd->index =
|
||||
ffs(tlmi_priv.pwdcfg.ext.hdd_master_password) - 1;
|
||||
@@ -1680,7 +1680,7 @@ static int tlmi_analyze(void)
|
||||
}
|
||||
if (tlmi_priv.pwdcfg.ext.nvme_user_password ||
|
||||
tlmi_priv.pwdcfg.ext.nvme_master_password) {
|
||||
tlmi_priv.pwd_nvme->valid = true;
|
||||
tlmi_priv.pwd_nvme->pwd_enabled = true;
|
||||
if (tlmi_priv.pwdcfg.ext.nvme_master_password)
|
||||
tlmi_priv.pwd_nvme->index =
|
||||
ffs(tlmi_priv.pwdcfg.ext.nvme_master_password) - 1;
|
||||
|
||||
@@ -65,7 +65,7 @@ struct tlmi_pwdcfg {
|
||||
/* password setting details */
|
||||
struct tlmi_pwd_setting {
|
||||
struct kobject kobj;
|
||||
bool valid;
|
||||
bool pwd_enabled;
|
||||
char password[TLMI_PWD_BUFSIZE];
|
||||
const char *pwd_type;
|
||||
const char *role;
|
||||
|
||||
Reference in New Issue
Block a user