forked from Minki/linux
platform/x86: dell-laptop: Refactor kbd_led_triggers_store()
Return -EINVAL immediately on invalid input, rather then doing the straight path in an if block and returning -EINVAL at the end of the function. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
This commit is contained in:
parent
504b02593f
commit
1c7e28246e
@ -1666,38 +1666,39 @@ static ssize_t kbd_led_triggers_store(struct device *dev,
|
||||
}
|
||||
}
|
||||
|
||||
if (trigger_bit != -1) {
|
||||
new_state = state;
|
||||
if (trigger[0] == '+')
|
||||
new_state.triggers |= BIT(trigger_bit);
|
||||
else {
|
||||
new_state.triggers &= ~BIT(trigger_bit);
|
||||
/* NOTE: trackstick bit (2) must be disabled when
|
||||
* disabling touchpad bit (1), otherwise touchpad
|
||||
* bit (1) will not be disabled */
|
||||
if (trigger_bit == 1)
|
||||
new_state.triggers &= ~BIT(2);
|
||||
}
|
||||
if ((kbd_info.triggers & new_state.triggers) !=
|
||||
new_state.triggers)
|
||||
return -EINVAL;
|
||||
if (new_state.triggers && !triggers_enabled) {
|
||||
new_state.mode_bit = KBD_MODE_BIT_TRIGGER;
|
||||
kbd_set_level(&new_state, kbd_previous_level);
|
||||
} else if (new_state.triggers == 0) {
|
||||
kbd_set_level(&new_state, 0);
|
||||
}
|
||||
if (!(kbd_info.modes & BIT(new_state.mode_bit)))
|
||||
return -EINVAL;
|
||||
ret = kbd_set_state_safe(&new_state, &state);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (new_state.mode_bit != KBD_MODE_BIT_OFF)
|
||||
kbd_previous_mode_bit = new_state.mode_bit;
|
||||
return count;
|
||||
}
|
||||
if (trigger_bit == -1)
|
||||
return -EINVAL;
|
||||
|
||||
return -EINVAL;
|
||||
new_state = state;
|
||||
if (trigger[0] == '+')
|
||||
new_state.triggers |= BIT(trigger_bit);
|
||||
else {
|
||||
new_state.triggers &= ~BIT(trigger_bit);
|
||||
/*
|
||||
* NOTE: trackstick bit (2) must be disabled when
|
||||
* disabling touchpad bit (1), otherwise touchpad
|
||||
* bit (1) will not be disabled
|
||||
*/
|
||||
if (trigger_bit == 1)
|
||||
new_state.triggers &= ~BIT(2);
|
||||
}
|
||||
if ((kbd_info.triggers & new_state.triggers) !=
|
||||
new_state.triggers)
|
||||
return -EINVAL;
|
||||
if (new_state.triggers && !triggers_enabled) {
|
||||
new_state.mode_bit = KBD_MODE_BIT_TRIGGER;
|
||||
kbd_set_level(&new_state, kbd_previous_level);
|
||||
} else if (new_state.triggers == 0) {
|
||||
kbd_set_level(&new_state, 0);
|
||||
}
|
||||
if (!(kbd_info.modes & BIT(new_state.mode_bit)))
|
||||
return -EINVAL;
|
||||
ret = kbd_set_state_safe(&new_state, &state);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (new_state.mode_bit != KBD_MODE_BIT_OFF)
|
||||
kbd_previous_mode_bit = new_state.mode_bit;
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t kbd_led_triggers_show(struct device *dev,
|
||||
|
Loading…
Reference in New Issue
Block a user