diff mbox series

ACPI: platform_profile: Fix memory leak in profile_class_is_visible()

Message ID 20250212193058.32110-1-kuurtb@gmail.com
State New
Headers show
Series ACPI: platform_profile: Fix memory leak in profile_class_is_visible() | expand

Commit Message

Kurt Borja Feb. 12, 2025, 7:30 p.m. UTC
If class_find_device() finds a device it's reference count is
incremented. Call put_device() to drop this reference before returning.

Fixes: 77be5cacb2c2 ("ACPI: platform_profile: Create class for ACPI platform profile")
Signed-off-by: Kurt Borja <kuurtb@gmail.com>
---
 drivers/acpi/platform_profile.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)


base-commit: 3e3e377dd1f300bbdd230533686ce9c9f4f8a90d

Comments

Mark Pearson Feb. 15, 2025, 2:18 a.m. UTC | #1
On Wed, Feb 12, 2025, at 2:30 PM, Kurt Borja wrote:
> If class_find_device() finds a device it's reference count is
> incremented. Call put_device() to drop this reference before returning.
>
> Fixes: 77be5cacb2c2 ("ACPI: platform_profile: Create class for ACPI 
> platform profile")
> Signed-off-by: Kurt Borja <kuurtb@gmail.com>
> ---
>  drivers/acpi/platform_profile.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/platform_profile.c 
> b/drivers/acpi/platform_profile.c
> index fc92e43d0fe9..2ad53cc6aae5 100644
> --- a/drivers/acpi/platform_profile.c
> +++ b/drivers/acpi/platform_profile.c
> @@ -417,8 +417,14 @@ static int profile_class_registered(struct device 
> *dev, const void *data)
> 
>  static umode_t profile_class_is_visible(struct kobject *kobj, struct 
> attribute *attr, int idx)
>  {
> -	if (!class_find_device(&platform_profile_class, NULL, NULL, 
> profile_class_registered))
> +	struct device *dev;
> +
> +	dev = class_find_device(&platform_profile_class, NULL, NULL, 
> profile_class_registered);
> +	if (!dev)
>  		return 0;
> +
> +	put_device(dev);
> +
>  	return attr->mode;
>  }
> 
>
> base-commit: 3e3e377dd1f300bbdd230533686ce9c9f4f8a90d
> -- 
> 2.48.1
Good find. Looks good to me.
Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>

Mark
Kurt Borja Feb. 18, 2025, 6:18 p.m. UTC | #2
On Tue Feb 18, 2025 at 1:07 PM -05, Rafael J. Wysocki wrote:
> On Sat, Feb 15, 2025 at 3:18 AM Mark Pearson <mpearson-lenovo@squebb.ca> wrote:
>>
>>
>> On Wed, Feb 12, 2025, at 2:30 PM, Kurt Borja wrote:
>> > If class_find_device() finds a device it's reference count is
>> > incremented. Call put_device() to drop this reference before returning.
>> >
>> > Fixes: 77be5cacb2c2 ("ACPI: platform_profile: Create class for ACPI
>> > platform profile")
>> > Signed-off-by: Kurt Borja <kuurtb@gmail.com>
>> > ---
>> >  drivers/acpi/platform_profile.c | 8 +++++++-
>> >  1 file changed, 7 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/acpi/platform_profile.c
>> > b/drivers/acpi/platform_profile.c
>> > index fc92e43d0fe9..2ad53cc6aae5 100644
>> > --- a/drivers/acpi/platform_profile.c
>> > +++ b/drivers/acpi/platform_profile.c
>> > @@ -417,8 +417,14 @@ static int profile_class_registered(struct device
>> > *dev, const void *data)
>> >
>> >  static umode_t profile_class_is_visible(struct kobject *kobj, struct
>> > attribute *attr, int idx)
>> >  {
>> > -     if (!class_find_device(&platform_profile_class, NULL, NULL,
>> > profile_class_registered))
>> > +     struct device *dev;
>> > +
>> > +     dev = class_find_device(&platform_profile_class, NULL, NULL,
>> > profile_class_registered);
>> > +     if (!dev)
>> >               return 0;
>> > +
>> > +     put_device(dev);
>> > +
>> >       return attr->mode;
>> >  }
>> >
>> >
>> > base-commit: 3e3e377dd1f300bbdd230533686ce9c9f4f8a90d
>> > --
>> > 2.48.1
>> Good find. Looks good to me.
>> Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
>
> Applied as 6.15 material, thanks!

Hi Rafael,

Thank you!

I believe this should be merged as a fix for v6.14-rc4 before
commit 77be5cacb2c2 hits stable.
Rafael J. Wysocki Feb. 18, 2025, 6:27 p.m. UTC | #3
On Tue, Feb 18, 2025 at 7:18 PM Kurt Borja <kuurtb@gmail.com> wrote:
>
> On Tue Feb 18, 2025 at 1:07 PM -05, Rafael J. Wysocki wrote:
> > On Sat, Feb 15, 2025 at 3:18 AM Mark Pearson <mpearson-lenovo@squebb.ca> wrote:
> >>
> >>
> >> On Wed, Feb 12, 2025, at 2:30 PM, Kurt Borja wrote:
> >> > If class_find_device() finds a device it's reference count is
> >> > incremented. Call put_device() to drop this reference before returning.
> >> >
> >> > Fixes: 77be5cacb2c2 ("ACPI: platform_profile: Create class for ACPI
> >> > platform profile")
> >> > Signed-off-by: Kurt Borja <kuurtb@gmail.com>
> >> > ---
> >> >  drivers/acpi/platform_profile.c | 8 +++++++-
> >> >  1 file changed, 7 insertions(+), 1 deletion(-)
> >> >
> >> > diff --git a/drivers/acpi/platform_profile.c
> >> > b/drivers/acpi/platform_profile.c
> >> > index fc92e43d0fe9..2ad53cc6aae5 100644
> >> > --- a/drivers/acpi/platform_profile.c
> >> > +++ b/drivers/acpi/platform_profile.c
> >> > @@ -417,8 +417,14 @@ static int profile_class_registered(struct device
> >> > *dev, const void *data)
> >> >
> >> >  static umode_t profile_class_is_visible(struct kobject *kobj, struct
> >> > attribute *attr, int idx)
> >> >  {
> >> > -     if (!class_find_device(&platform_profile_class, NULL, NULL,
> >> > profile_class_registered))
> >> > +     struct device *dev;
> >> > +
> >> > +     dev = class_find_device(&platform_profile_class, NULL, NULL,
> >> > profile_class_registered);
> >> > +     if (!dev)
> >> >               return 0;
> >> > +
> >> > +     put_device(dev);
> >> > +
> >> >       return attr->mode;
> >> >  }
> >> >
> >> >
> >> > base-commit: 3e3e377dd1f300bbdd230533686ce9c9f4f8a90d
> >> > --
> >> > 2.48.1
> >> Good find. Looks good to me.
> >> Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
> >
> > Applied as 6.15 material, thanks!
>
> Hi Rafael,
>
> Thank you!
>
> I believe this should be merged as a fix for v6.14-rc4 before
> commit 77be5cacb2c2 hits stable.

I can queue it up for 6.14-rc, but that may not prevent 77be5cacb2c2
from going into -stable before it.

Thanks!
diff mbox series

Patch

diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c
index fc92e43d0fe9..2ad53cc6aae5 100644
--- a/drivers/acpi/platform_profile.c
+++ b/drivers/acpi/platform_profile.c
@@ -417,8 +417,14 @@  static int profile_class_registered(struct device *dev, const void *data)
 
 static umode_t profile_class_is_visible(struct kobject *kobj, struct attribute *attr, int idx)
 {
-	if (!class_find_device(&platform_profile_class, NULL, NULL, profile_class_registered))
+	struct device *dev;
+
+	dev = class_find_device(&platform_profile_class, NULL, NULL, profile_class_registered);
+	if (!dev)
 		return 0;
+
+	put_device(dev);
+
 	return attr->mode;
 }