summaryrefslogtreecommitdiffstats
path: root/drivers/gpio
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-11-08 14:40:06 +0100
committerLinus Walleij <linus.walleij@linaro.org>2016-11-09 09:43:55 +0100
commitc82064f26f44ea13f097dfb58d5ffd4359dcabbb (patch)
tree731092773f6c54fbb6d4478e4cf670089d9e3b02 /drivers/gpio
parentgpio: davinci: Use unique labels for each gpio chip (diff)
downloadlinux-c82064f26f44ea13f097dfb58d5ffd4359dcabbb.tar.xz
linux-c82064f26f44ea13f097dfb58d5ffd4359dcabbb.zip
ACPI / gpio: avoid warning for gpio hogging code
The newly added acpi_gpiochip_scan_gpios function produces a few harmless warnings: drivers/gpio/gpiolib-acpi.c: In function ‘acpi_gpiochip_add’: drivers/gpio/gpiolib-acpi.c:925:7: error: ‘dflags’ may be used uninitialized in this function [-Werror=maybe-uninitialized] drivers/gpio/gpiolib-acpi.c:925:9: error: ‘lflags’ may be used uninitialized in this function [-Werror=maybe-uninitialized] The problem is that he compiler cannot know that a negative return value from fwnode_property_read_u32_array() or acpi_gpiochip_pin_to_gpio_offset() implies that the IS_ERR(gpio_desc) is true, as the value could in theory be below -MAX_ERRNO. The function already initializes its output values to zero, and moving that intialization a little higher up ensures that we can never have uninitialized data in the caller. Fixes: c80f1ba75df2 ("ACPI / gpio: Add hogging support") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/gpiolib-acpi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c
index 83fcfff19cd6..fec93b994fe9 100644
--- a/drivers/gpio/gpiolib-acpi.c
+++ b/drivers/gpio/gpiolib-acpi.c
@@ -866,6 +866,10 @@ static struct gpio_desc *acpi_gpiochip_parse_own_gpio(
u32 gpios[2];
int ret;
+ *lflags = 0;
+ *dflags = 0;
+ *name = NULL;
+
ret = fwnode_property_read_u32_array(fwnode, "gpios", gpios,
ARRAY_SIZE(gpios));
if (ret < 0)
@@ -879,10 +883,6 @@ static struct gpio_desc *acpi_gpiochip_parse_own_gpio(
if (IS_ERR(desc))
return desc;
- *lflags = 0;
- *dflags = 0;
- *name = NULL;
-
if (gpios[1])
*lflags |= GPIO_ACTIVE_LOW;