aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrans Klaver <fransklaver@gmail.com>2014-09-17 17:47:26 -0400
committerDarren Hart <dvhart@linux.intel.com>2014-09-19 12:42:11 -0400
commita5c155b16f4c170d96d41fc6066f245f2d53604d (patch)
tree9dee97f27ca749bb850a8766a85e577df22655c0
parent48d4a5b29c8d0cf544ffe96f5855452446b6f20d (diff)
eeepc-laptop: check proper return values in get_cpufv
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>
-rw-r--r--drivers/platform/x86/eeepc-laptop.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
index e93a54edb17a..875a43fcaa86 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -332,9 +332,12 @@ struct eeepc_cpufv {
332static int get_cpufv(struct eeepc_laptop *eeepc, struct eeepc_cpufv *c) 332static int get_cpufv(struct eeepc_laptop *eeepc, struct eeepc_cpufv *c)
333{ 333{
334 c->cur = get_acpi(eeepc, CM_ASL_CPUFV); 334 c->cur = get_acpi(eeepc, CM_ASL_CPUFV);
335 if (c->cur < 0)
336 return -ENODEV;
337
335 c->num = (c->cur >> 8) & 0xff; 338 c->num = (c->cur >> 8) & 0xff;
336 c->cur &= 0xff; 339 c->cur &= 0xff;
337 if (c->cur < 0 || c->num <= 0 || c->num > 12) 340 if (c->num == 0 || c->num > 12)
338 return -ENODEV; 341 return -ENODEV;
339 return 0; 342 return 0;
340} 343}