Before commit 8b4f52ef7a41 ("gpiolib: acpi: Deduplicate some code in __acpi_find_gpio()") and the follow-up fix commit 7c010d463372 ("gpiolib: acpi: Make sure we fill struct acpi_gpio_info"). The struct acpi_gpio_info used during lookups was part of struct acpi_gpio_lookup which gets memset() to 0 before use. And then after a successful lookup, acpi_gpio_resource_lookup() would copy the content of the zeroed acpi_gpio_lookup.info to the on stack struct acpi_gpio_info in __acpi_find_gpio(), overwriting any uninitialized memory contents there. But now instead a pointer to the on stack struct acpi_gpio_info in __acpi_find_gpio() is passed around, but that struct is never initialized. This passing around of the uninitialized struct breaks index based lookups of GpioInt GPIOs because info->quirks now contains some random on stack data which may contain ACPI_GPIO_QUIRK_ONLY_GPIOIO. Initialize the on stack struct acpi_gpio_info to 0 to fix this. Fixes: 8b4f52ef7a41 ("gpiolib: acpi: Deduplicate some code in __acpi_find_gpio()") Fixes: 7c010d463372 ("gpiolib: acpi: Make sure we fill struct acpi_gpio_info") Signed-off-by: Hans de Goede <hansg@xxxxxxxxxx> --- drivers/gpio/gpiolib-acpi-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpio/gpiolib-acpi-core.c b/drivers/gpio/gpiolib-acpi-core.c index 12b24a717e43..1cc5d0702ee1 100644 --- a/drivers/gpio/gpiolib-acpi-core.c +++ b/drivers/gpio/gpiolib-acpi-core.c @@ -942,7 +942,7 @@ struct gpio_desc *acpi_find_gpio(struct fwnode_handle *fwnode, { struct acpi_device *adev = to_acpi_device_node(fwnode); bool can_fallback = acpi_can_fallback_to_crs(adev, con_id); - struct acpi_gpio_info info; + struct acpi_gpio_info info = { }; struct gpio_desc *desc; desc = __acpi_find_gpio(fwnode, con_id, idx, can_fallback, &info); -- 2.51.0