Message ID | 20230202151515.2309543-1-gregkh@linuxfoundation.org (mailing list archive) |
---|---|
State | Mainlined, archived |
Headers | show |
Series | kernel/power/energy_model.c: fix memory leak with using debugfs_lookup() | expand |
On Thu, Feb 2, 2023 at 4:15 PM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > When calling debugfs_lookup() the result must have dput() called on it, > otherwise the memory will leak over time. To make things simpler, just > call debugfs_lookup_and_remove() instead which handles all of the logic > at once. > > Cc: "Rafael J. Wysocki" <rafael@kernel.org> > Cc: Pavel Machek <pavel@ucw.cz> > Cc: Len Brown <len.brown@intel.com> > Cc: linux-pm@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > --- > kernel/power/energy_model.c | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c > index f82111837b8d..7b44f5b89fa1 100644 > --- a/kernel/power/energy_model.c > +++ b/kernel/power/energy_model.c > @@ -87,10 +87,7 @@ static void em_debug_create_pd(struct device *dev) > > static void em_debug_remove_pd(struct device *dev) > { > - struct dentry *debug_dir; > - > - debug_dir = debugfs_lookup(dev_name(dev), rootdir); > - debugfs_remove_recursive(debug_dir); > + debugfs_lookup_and_remove(dev_name(dev), rootdir); > } > > static int __init em_debug_init(void) > -- Applied as 6.3 material, thanks!
diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c index f82111837b8d..7b44f5b89fa1 100644 --- a/kernel/power/energy_model.c +++ b/kernel/power/energy_model.c @@ -87,10 +87,7 @@ static void em_debug_create_pd(struct device *dev) static void em_debug_remove_pd(struct device *dev) { - struct dentry *debug_dir; - - debug_dir = debugfs_lookup(dev_name(dev), rootdir); - debugfs_remove_recursive(debug_dir); + debugfs_lookup_and_remove(dev_name(dev), rootdir); } static int __init em_debug_init(void)
When calling debugfs_lookup() the result must have dput() called on it, otherwise the memory will leak over time. To make things simpler, just call debugfs_lookup_and_remove() instead which handles all of the logic at once. Cc: "Rafael J. Wysocki" <rafael@kernel.org> Cc: Pavel Machek <pavel@ucw.cz> Cc: Len Brown <len.brown@intel.com> Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- kernel/power/energy_model.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)