gpiolib: Fix using uninitialized lookup-flags on ACPI platforms
authorHans de Goede <hdegoede@redhat.com>
Thu, 29 Dec 2022 16:45:01 +0000 (17:45 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Fri, 30 Dec 2022 10:03:05 +0000 (11:03 +0100)
commitba2dc1cb5491712a6946d0595cf11ba463f50e64
tree8afa1b82693a84e6d62720a3252f2d52bc1e23ed
parent1b929c02afd37871d5afb9d498426f83432e71c2
gpiolib: Fix using uninitialized lookup-flags on ACPI platforms

Commit 8eb1f71e7acc ("gpiolib: consolidate GPIO lookups") refactors
fwnode_get_named_gpiod() and gpiod_get_index() into a unified
gpiod_find_and_request() helper.

The old functions both initialized their local lookupflags variable to
GPIO_LOOKUP_FLAGS_DEFAULT, but the new code leaves it uninitialized.

This is a problem for at least ACPI platforms, where acpi_find_gpio()
only does a bunch of *lookupflags |= GPIO_* statements and thus relies
on the variable being initialized.

The variable not being initialized leads to:

1. Potentially the wrong flags getting used
2. The check for conflicting lookup flags in gpiod_configure_flags():
   "multiple pull-up, pull-down or pull-disable enabled, invalid config"
   sometimes triggering, making the GPIO unavailable

Restore the initialization of lookupflags to GPIO_LOOKUP_FLAGS_DEFAULT
to fix this.

Fixes: 8eb1f71e7acc ("gpiolib: consolidate GPIO lookups")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib.c