Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5c155b1 authored by Frans Klaver's avatar Frans Klaver Committed by Darren Hart
Browse files

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: default avatarFrans Klaver <fransklaver@gmail.com>
Signed-off-by: default avatarDarren Hart <dvhart@linux.intel.com>
parent 48d4a5b2
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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;
}