Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gpiolib: Don't free if pin ranges are not defined

A similar check was added in gpiochip_generic_request, but not in free.
This has caused an imbalance count of request vs. free calls to the
pinctrl driver. This patch is targeted to fix that issue.

Fixes: 2ab73c6d8323 ("gpio: Support GPIO controllers without pin-ranges")
Signed-off-by: Edmond Chung <edmondchung@google.com>
Signed-off-by: Andrew Chant <achant@google.com>
Signed-off-by: Will McVicker <willmcvicker@google.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>

authored by

Edmond Chung and committed by
Bartosz Golaszewski
6dbbf846 60593df6

+5
+5
drivers/gpio/gpiolib.c
··· 1806 1806 */ 1807 1807 void gpiochip_generic_free(struct gpio_chip *gc, unsigned offset) 1808 1808 { 1809 + #ifdef CONFIG_PINCTRL 1810 + if (list_empty(&gc->gpiodev->pin_ranges)) 1811 + return; 1812 + #endif 1813 + 1809 1814 pinctrl_gpio_free(gc->gpiodev->base + offset); 1810 1815 } 1811 1816 EXPORT_SYMBOL_GPL(gpiochip_generic_free);