| From 50fa90bfce515c9bad5c05a0cfa05765a82c37b9 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 18 Jun 2020 14:49:06 +0300 |
| Subject: gpio: pca953x: Fix GPIO resource leak on Intel Galileo Gen 2 |
| |
| From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| |
| [ Upstream commit 5d8913504ccfeea6120df5ae1c6f4479ff09b931 ] |
| |
| When adding a quirk for IRQ on Intel Galileo Gen 2 the commit ba8c90c61847 |
| ("gpio: pca953x: Override IRQ for one of the expanders on Galileo Gen 2") |
| missed GPIO resource release. We can safely do this in the same quirk, since |
| IRQ will be locked by GPIO framework when requested and unlocked on freeing. |
| |
| Fixes: ba8c90c61847 ("gpio: pca953x: Override IRQ for one of the expanders on Galileo Gen 2") |
| Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| Cc: Mika Westerberg <mika.westerberg@linux.intel.com> |
| Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> |
| Reviewed-by: Linus Walleij <linus.walleij@linaro.org> |
| Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpio/gpio-pca953x.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c |
| index c935019c0257c..81f5103dccb6f 100644 |
| --- a/drivers/gpio/gpio-pca953x.c |
| +++ b/drivers/gpio/gpio-pca953x.c |
| @@ -176,7 +176,12 @@ static int pca953x_acpi_get_irq(struct device *dev) |
| if (ret) |
| return ret; |
| |
| - return gpio_to_irq(pin); |
| + ret = gpio_to_irq(pin); |
| + |
| + /* When pin is used as an IRQ, no need to keep it requested */ |
| + gpio_free(pin); |
| + |
| + return ret; |
| } |
| #endif |
| |
| -- |
| 2.25.1 |
| |