summaryrefslogtreecommitdiff
path: root/drivers/platform
diff options
context:
space:
mode:
authorNitin Joshi <njoshi1@lenovo.com>2021-02-02 03:32:10 +0300
committerHans de Goede <hdegoede@redhat.com>2021-02-02 17:11:08 +0300
commitcfa75cca618ef35cbbc05ff74ca9af6c7ff274ea (patch)
treed53d37922b62415492df8eaf71896d9e9bd0628a /drivers/platform
parenta78b96fe95019d5e21f39ac1f2bb764e9c130bfc (diff)
downloadlinux-cfa75cca618ef35cbbc05ff74ca9af6c7ff274ea.tar.xz
platform/x86: thinkpad_acpi: fixed warning and incorporated review comments
The previous commit adding new sysfs for keyboard language has warning and few code correction has to be done as per new review comments. Below changes has been addressed in this version: - corrected warning. Many thanks to kernel test robot <lkp@intel.com> for reporting and determining this warning. - used sysfs_emit_at() API instead of strcat. - sorted keyboard language array. - removed unwanted space and corrected sentences. Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Nitin Joshi <njoshi1@lenovo.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Link: https://lore.kernel.org/r/20210202003210.91773-1-njoshi1@lenovo.com Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'drivers/platform')
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c33
1 files changed, 11 insertions, 22 deletions
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index 4a1dba3099a6..48575efb5ae8 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -9992,16 +9992,12 @@ struct keyboard_lang_data {
int lang_code;
};
-/*
- * When adding new entries to keyboard_lang_data, please check that
- * the select_lang[] buffer in keyboard_lang_show() is still large enough.
- */
-struct keyboard_lang_data keyboard_lang_data[] = {
- {"en", 0},
+static const struct keyboard_lang_data keyboard_lang_data[] = {
{"be", 0x080c},
{"cz", 0x0405},
{"da", 0x0406},
{"de", 0x0c07},
+ {"en", 0x0000},
{"es", 0x2c0a},
{"et", 0x0425},
{"fr", 0x040c},
@@ -10064,9 +10060,7 @@ static ssize_t keyboard_lang_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{
- int output, err, i;
- char select_lang[80] = "";
- char lang[8] = "";
+ int output, err, i, len = 0;
err = get_keyboard_lang(&output);
if (err)
@@ -10074,19 +10068,17 @@ static ssize_t keyboard_lang_show(struct device *dev,
for (i = 0; i < ARRAY_SIZE(keyboard_lang_data); i++) {
if (i)
- strcat(select_lang, " ");
+ len += sysfs_emit_at(buf, len, "%s", " ");
if (output == keyboard_lang_data[i].lang_code) {
- strcat(lang, "[");
- strcat(lang, keyboard_lang_data[i].lang_str);
- strcat(lang, "]");
- strcat(select_lang, lang);
+ len += sysfs_emit_at(buf, len, "[%s]", keyboard_lang_data[i].lang_str);
} else {
- strcat(select_lang, keyboard_lang_data[i].lang_str);
+ len += sysfs_emit_at(buf, len, "%s", keyboard_lang_data[i].lang_str);
}
}
+ len += sysfs_emit_at(buf, len, "\n");
- return sysfs_emit(buf, "%s\n", select_lang);
+ return len;
}
static ssize_t keyboard_lang_store(struct device *dev,
@@ -10113,7 +10105,7 @@ static ssize_t keyboard_lang_store(struct device *dev,
if (err)
return err;
} else {
- pr_err("Unknown Keyboard language. Ignoring\n");
+ dev_err(&tpacpi_pdev->dev, "Unknown Keyboard language. Ignoring\n");
return -EINVAL;
}
@@ -10124,7 +10116,6 @@ static ssize_t keyboard_lang_store(struct device *dev,
return count;
}
-
static DEVICE_ATTR_RW(keyboard_lang);
static struct attribute *kbdlang_attributes[] = {
@@ -10143,7 +10134,7 @@ static int tpacpi_kbdlang_init(struct ibm_init_struct *iibm)
err = get_keyboard_lang(&output);
/*
* If support isn't available (ENODEV) then don't return an error
- * just don't create the sysfs group
+ * just don't create the sysfs group.
*/
if (err == -ENODEV)
return 0;
@@ -10152,9 +10143,7 @@ static int tpacpi_kbdlang_init(struct ibm_init_struct *iibm)
return err;
/* Platform supports this feature - create the sysfs file */
- err = sysfs_create_group(&tpacpi_pdev->dev.kobj, &kbdlang_attr_group);
-
- return err;
+ return sysfs_create_group(&tpacpi_pdev->dev.kobj, &kbdlang_attr_group);
}
static void kbdlang_exit(void)