Commit aeaac098 authored by Dan Carpenter's avatar Dan Carpenter Committed by Darren Hart

toshiba_acpi: fix and cleanup toshiba_kbd_bl_mode_store()

The current code just returns -EINVAL because mode can't be equal to
both 1 and 2.

Also this function is messy so I have cleaned it up:
1) Remove initializers like "int time = -1".  Initializing variables to
   garbage values turns off GCC's uninitialized variable warnings so it
   can lead to bugs.
2) Use kstrtoint() instead of sscanf().
3) Use SCI_KBD_MODE_FNZ and SCI_KBD_MODE_AUTO instead of magic numbers 1
   and 2.
4) Don't check for "mode == -1" because that can't happen.
5) Preserve the error code from toshiba_kbd_illum_status_set().
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarDarren Hart <dvhart@linux.intel.com>
parent e7fdb762
...@@ -1255,10 +1255,15 @@ static ssize_t toshiba_kbd_bl_mode_store(struct device *dev, ...@@ -1255,10 +1255,15 @@ static ssize_t toshiba_kbd_bl_mode_store(struct device *dev,
const char *buf, size_t count) const char *buf, size_t count)
{ {
struct toshiba_acpi_dev *toshiba = dev_get_drvdata(dev); struct toshiba_acpi_dev *toshiba = dev_get_drvdata(dev);
int mode = -1; int mode;
int time = -1; int time;
int ret;
if (sscanf(buf, "%i", &mode) != 1 && (mode != 2 || mode != 1)) ret = kstrtoint(buf, 0, &mode);
if (ret)
return ret;
if (mode != SCI_KBD_MODE_FNZ && mode != SCI_KBD_MODE_AUTO)
return -EINVAL; return -EINVAL;
/* Set the Keyboard Backlight Mode where: /* Set the Keyboard Backlight Mode where:
...@@ -1266,11 +1271,12 @@ static ssize_t toshiba_kbd_bl_mode_store(struct device *dev, ...@@ -1266,11 +1271,12 @@ static ssize_t toshiba_kbd_bl_mode_store(struct device *dev,
* Auto - KBD backlight turns off automatically in given time * Auto - KBD backlight turns off automatically in given time
* FN-Z - KBD backlight "toggles" when hotkey pressed * FN-Z - KBD backlight "toggles" when hotkey pressed
*/ */
if (mode != -1 && toshiba->kbd_mode != mode) { if (toshiba->kbd_mode != mode) {
time = toshiba->kbd_time << HCI_MISC_SHIFT; time = toshiba->kbd_time << HCI_MISC_SHIFT;
time = time + toshiba->kbd_mode; time = time + toshiba->kbd_mode;
if (toshiba_kbd_illum_status_set(toshiba, time) < 0) ret = toshiba_kbd_illum_status_set(toshiba, time);
return -EIO; if (ret)
return ret;
toshiba->kbd_mode = mode; toshiba->kbd_mode = mode;
} }
......
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