diff mbox series

[v2,2/2] gpio: merrifield: Convert to use acpi_dev_get_first_match_dev()

Message ID 20190318200055.84519-2-andriy.shevchenko@linux.intel.com
State New
Headers show
Series [v2,1/2] ACPI / utils: Introduce acpi_dev_get_first_match_dev() helper | expand

Commit Message

Andy Shevchenko March 18, 2019, 8 p.m. UTC
acpi_dev_get_first_match_name() is deprecated because it leaks
a reference.

Convert the driver to use acpi_dev_get_first_match_dev() instead.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/gpio/gpio-merrifield.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

Comments

Linus Walleij April 4, 2019, 5:07 a.m. UTC | #1
On Tue, Mar 19, 2019 at 3:00 AM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:

> acpi_dev_get_first_match_name() is deprecated because it leaks
> a reference.
>
> Convert the driver to use acpi_dev_get_first_match_dev() instead.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

I assume this will come to me in a pull request at some point.

Yours,
Linus Walleij
Andy Shevchenko April 4, 2019, 8:25 a.m. UTC | #2
On Thu, Apr 04, 2019 at 12:07:01PM +0700, Linus Walleij wrote:
> On Tue, Mar 19, 2019 at 3:00 AM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> 
> > acpi_dev_get_first_match_name() is deprecated because it leaks
> > a reference.
> >
> > Convert the driver to use acpi_dev_get_first_match_dev() instead.
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> 
> I assume this will come to me in a pull request at some point.

This is in its v3 went through ACPI subsystem.
Thanks!
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-merrifield.c b/drivers/gpio/gpio-merrifield.c
index 7c659fdaa6d5..2383dc78b123 100644
--- a/drivers/gpio/gpio-merrifield.c
+++ b/drivers/gpio/gpio-merrifield.c
@@ -377,10 +377,20 @@  static void mrfld_irq_init_hw(struct mrfld_gpio *priv)
 	}
 }
 
-static const char *mrfld_gpio_get_pinctrl_dev_name(void)
+static const char *mrfld_gpio_get_pinctrl_dev_name(struct mrfld_gpio *priv)
 {
-	const char *dev_name = acpi_dev_get_first_match_name("INTC1002", NULL, -1);
-	return dev_name ? dev_name : "pinctrl-merrifield";
+	struct acpi_device *adev;
+	const char *name;
+
+	adev = acpi_dev_get_first_match_dev("INTC1002", NULL, -1);
+	if (adev) {
+		name = devm_kstrdup(priv->dev, acpi_dev_name(adev), GFP_KERNEL);
+		put_device(&adev->dev);
+	} else {
+		name = "pinctrl-merrifield";
+	}
+
+	return name;
 }
 
 static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id)
@@ -441,7 +451,7 @@  static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id
 		return retval;
 	}
 
-	pinctrl_dev_name = mrfld_gpio_get_pinctrl_dev_name();
+	pinctrl_dev_name = mrfld_gpio_get_pinctrl_dev_name(priv);
 	for (i = 0; i < ARRAY_SIZE(mrfld_gpio_ranges); i++) {
 		range = &mrfld_gpio_ranges[i];
 		retval = gpiochip_add_pin_range(&priv->chip,