Jiri Slaby c6f386
From: Mark Pearson <mpearson-lenovo@squebb.ca>
Jiri Slaby c6f386
Date: Sun, 2 Apr 2023 21:31:20 -0400
Jiri Slaby c6f386
Subject: [PATCH] platform/x86: think-lmi: Clean up display of current_value on
Jiri Slaby c6f386
 Thinkstation
Jiri Slaby c6f386
References: bsc#1012628
Jiri Slaby c6f386
Patch-mainline: 6.2.11
Jiri Slaby c6f386
Git-commit: 7065655216d4d034d71164641f3bec0b189ad6fa
Jiri Slaby c6f386
Jiri Slaby c6f386
[ Upstream commit 7065655216d4d034d71164641f3bec0b189ad6fa ]
Jiri Slaby c6f386
Jiri Slaby c6f386
On ThinkStations on retrieving the attribute value the BIOS appends the
Jiri Slaby c6f386
possible values to the string.
Jiri Slaby c6f386
Clean up the display in the current_value_show function so the options
Jiri Slaby c6f386
part is not displayed.
Jiri Slaby c6f386
Jiri Slaby c6f386
Fixes: a40cd7ef22fb ("platform/x86: think-lmi: Add WMI interface support on Lenovo platforms")
Jiri Slaby c6f386
Reported by Mario Limoncello <Mario.Limonciello@amd.com>
Jiri Slaby c6f386
Link: https://github.com/fwupd/fwupd/issues/5077#issuecomment-1488730526
Jiri Slaby c6f386
Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Jiri Slaby c6f386
Link: https://lore.kernel.org/r/20230403013120.2105-2-mpearson-lenovo@squebb.ca
Jiri Slaby c6f386
Tested-by: Mario Limonciello <mario.limonciello@amd.com>
Jiri Slaby c6f386
Tested-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
Jiri Slaby c6f386
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Jiri Slaby c6f386
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Jiri Slaby c6f386
Signed-off-by: Sasha Levin <sashal@kernel.org>
Jiri Slaby c6f386
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby c6f386
---
Jiri Slaby c6f386
 drivers/platform/x86/think-lmi.c | 9 ++++++---
Jiri Slaby c6f386
 1 file changed, 6 insertions(+), 3 deletions(-)
Jiri Slaby c6f386
Jiri Slaby c6f386
diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c
Jiri Slaby c6f386
index 70c4ee25..336b9029 100644
Jiri Slaby c6f386
--- a/drivers/platform/x86/think-lmi.c
Jiri Slaby c6f386
+++ b/drivers/platform/x86/think-lmi.c
Jiri Slaby c6f386
@@ -920,7 +920,7 @@ static ssize_t display_name_show(struct kobject *kobj, struct kobj_attribute *at
Jiri Slaby c6f386
 static ssize_t current_value_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
Jiri Slaby c6f386
 {
Jiri Slaby c6f386
 	struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj);
Jiri Slaby c6f386
-	char *item, *value;
Jiri Slaby c6f386
+	char *item, *value, *p;
Jiri Slaby c6f386
 	int ret;
Jiri Slaby c6f386
 
Jiri Slaby c6f386
 	ret = tlmi_setting(setting->index, &item, LENOVO_BIOS_SETTING_GUID);
Jiri Slaby c6f386
@@ -931,9 +931,12 @@ static ssize_t current_value_show(struct kobject *kobj, struct kobj_attribute *a
Jiri Slaby c6f386
 	value = strpbrk(item, ",");
Jiri Slaby c6f386
 	if (!value || value == item || !strlen(value + 1))
Jiri Slaby c6f386
 		ret = -EINVAL;
Jiri Slaby c6f386
-	else
Jiri Slaby c6f386
+	else {
Jiri Slaby c6f386
+		/* On Workstations remove the Options part after the value */
Jiri Slaby c6f386
+		p = strchrnul(value, ';');
Jiri Slaby c6f386
+		*p = '\0';
Jiri Slaby c6f386
 		ret = sysfs_emit(buf, "%s\n", value + 1);
Jiri Slaby c6f386
-
Jiri Slaby c6f386
+	}
Jiri Slaby c6f386
 	kfree(item);
Jiri Slaby c6f386
 
Jiri Slaby c6f386
 	return ret;
Jiri Slaby c6f386
-- 
Jiri Slaby c6f386
2.35.3
Jiri Slaby c6f386