Messages in this thread |  | | Date | Mon, 23 Jan 2023 18:46:44 +0100 | | Subject | Re: [PATCH v1 1/3] ACPI: video: Fix refcounting in apple_gmux_backlight_present() | | From | Hans de Goede <> |
| |
Hi Andy,
On 1/23/23 18:10, Andy Shevchenko wrote: > acpi_dev_get_first_match_dev() gets ACPI device with the bumped > refcount. The caller must drop it when it's done. > > Fix ACPI device refcounting in apple_gmux_backlight_present(). > > Fixes: 3cf3b7f012f3 ("ACPI: video: Fix Apple GMUX backlight detection") > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Thank you for your work on this, much appreciated and I like the new acpi_get_first_match_physical_node().
But I don't think this patch is a good idea. There is a regression related to apple_gmux_backlight_present() with a patch-set fixing it pending.
And that patch-set actually removes this function. Adding a fix for this real, but not really important leak now, will just make backporting the actual fix harder.
So I would prefer for this patch to not go in and to go for (a to be submitted v2) of the patch-set fixing the regression right away instead.
Regards,
Hans
> --- > drivers/acpi/video_detect.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c > index 65cec7bb6d96..0ccde0d4c527 100644 > --- a/drivers/acpi/video_detect.c > +++ b/drivers/acpi/video_detect.c > @@ -114,12 +114,14 @@ static bool apple_gmux_backlight_present(void) > { > struct acpi_device *adev; > struct device *dev; > + bool ret; > > adev = acpi_dev_get_first_match_dev(GMUX_ACPI_HID, NULL, -1); > if (!adev) > return false; > > - dev = acpi_get_first_physical_node(adev); > + dev = get_device(acpi_get_first_physical_node(adev)); > + acpi_dev_put(adev); > if (!dev) > return false; > > @@ -127,7 +129,9 @@ static bool apple_gmux_backlight_present(void) > * drivers/platform/x86/apple-gmux.c only supports old style > * Apple GMUX with an IO-resource. > */ > - return pnp_get_resource(to_pnp_dev(dev), IORESOURCE_IO, 0) != NULL; > + ret = pnp_get_resource(to_pnp_dev(dev), IORESOURCE_IO, 0) != NULL; > + put_device(dev); > + return ret; > } > > /* Force to use vendor driver when the ACPI device is known to be
|  |