platform/x86: dell-laptop: Refactor kbd_led_triggers_store()
authorHans de Goede <hdegoede@redhat.com>
Thu, 16 Mar 2017 10:55:33 +0000 (11:55 +0100)
committerDarren Hart (VMware) <dvhart@infradead.org>
Thu, 13 Apr 2017 17:12:43 +0000 (10:12 -0700)
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>
drivers/platform/x86/dell-laptop.c

index f57dd282a0021a5645eab7fb56b6c7a10307a4d1..4de7aa04653faa4535e2793b265225f0aa3216a2 100644 (file)
@@ -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,