eeepc-laptop: check proper return values in get_cpufv
authorFrans Klaver <fransklaver@gmail.com>
Wed, 17 Sep 2014 21:47:26 +0000 (23:47 +0200)
committerDarren Hart <dvhart@linux.intel.com>
Fri, 19 Sep 2014 16:42:11 +0000 (09:42 -0700)
In get_cpufv the return value of get_acpi is stored in the cpufv struct.
Right before this value is checked for errors, it is and'ed with 0xff.
This means c->cur can never be less than zero. Besides that, the actual
error value is ignored.

c->num is also and'ed with 0xff, which means we can ignore values below
zero.

Check the result of get_acpi() right away. While at it, propagate the
error if we got one.

Signed-off-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
drivers/platform/x86/eeepc-laptop.c

index e93a54edb17af26b254381dd4aa47123986b28e7..875a43fcaa869d04a6120ad470cfb4254ba7a7eb 100644 (file)
@@ -332,9 +332,12 @@ struct eeepc_cpufv {
 static int get_cpufv(struct eeepc_laptop *eeepc, struct eeepc_cpufv *c)
 {
        c->cur = get_acpi(eeepc, CM_ASL_CPUFV);
+       if (c->cur < 0)
+               return -ENODEV;
+
        c->num = (c->cur >> 8) & 0xff;
        c->cur &= 0xff;
-       if (c->cur < 0 || c->num <= 0 || c->num > 12)
+       if (c->num == 0 || c->num > 12)
                return -ENODEV;
        return 0;
 }
This page took 0.025911 seconds and 5 git commands to generate.