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 |
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
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.
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 --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; }
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