Commit 68ede283 authored by Justin Stitt's avatar Justin Stitt Committed by Dmitry Torokhov

Input: axp20x-pek - avoid needless newline removal

This code is doing more work than it needs to.

Before handing off `val_str` to `kstrtouint()` we are eagerly removing
any trailing newline which requires copying `buf`, validating it's
length and checking/replacing any potential newlines.

kstrtouint() handles this implicitly:
kstrtouint ->
  kstrotoull -> (documentation)
|   /**
|    * kstrtoull - convert a string to an unsigned long long
|    * @s: The start of the string. The string must be null-terminated, and may also
|    *  include a single newline before its terminating null. The first character
|    ...

Let's remove the redundant functionality and let kstrtouint handle it.
Suggested-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarJustin Stitt <justinstitt@google.com>
Reviewed-by: default avatarChen-Yu Tsai <wens@csie.org>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20230925-strncpy-drivers-input-misc-axp20x-pek-c-v2-1-ff7abe8498d6@google.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 348cbf98
...@@ -133,20 +133,11 @@ static ssize_t axp20x_store_attr(struct device *dev, ...@@ -133,20 +133,11 @@ static ssize_t axp20x_store_attr(struct device *dev,
size_t count) size_t count)
{ {
struct axp20x_pek *axp20x_pek = dev_get_drvdata(dev); struct axp20x_pek *axp20x_pek = dev_get_drvdata(dev);
char val_str[20];
size_t len;
int ret, i; int ret, i;
unsigned int val, idx = 0; unsigned int val, idx = 0;
unsigned int best_err = UINT_MAX; unsigned int best_err = UINT_MAX;
val_str[sizeof(val_str) - 1] = '\0'; ret = kstrtouint(buf, 10, &val);
strncpy(val_str, buf, sizeof(val_str) - 1);
len = strlen(val_str);
if (len && val_str[len - 1] == '\n')
val_str[len - 1] = '\0';
ret = kstrtouint(val_str, 10, &val);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment