gpio / ACPI: Prevent potential wrap of GPIO value on OpRegion read
Dan Carpenter's static code checker reports:
The patch 473ed7be0d
: "gpio / ACPI: Add support for ACPI GPIO
operation regions" from Mar 14, 2014, leads to the following static
checker warning:
drivers/gpio/gpiolib-acpi.c:454 acpi_gpio_adr_space_handler()
warn: should 'gpiod_get_raw_value(desc) << i' be a 64 bit type?
This is due the fact that *value is of type u64 and gpiod_get_raw_value()
returns int. Since i can be larger than 31, it is possible that the value
returned gets wrapped.
Fix this by casting the return of gpiod_get_raw_value() to u64 first before
shift.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
e9595f84a6
commit
b5539fa2d5
1 changed files with 1 additions and 1 deletions
|
@ -451,7 +451,7 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
|
||||||
if (function == ACPI_WRITE)
|
if (function == ACPI_WRITE)
|
||||||
gpiod_set_raw_value(desc, !!((1 << i) & *value));
|
gpiod_set_raw_value(desc, !!((1 << i) & *value));
|
||||||
else
|
else
|
||||||
*value |= gpiod_get_raw_value(desc) << i;
|
*value |= (u64)gpiod_get_raw_value(desc) << i;
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
Loading…
Reference in a new issue