* [PATCH] kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() @ 2023-02-02 15:15 Greg Kroah-Hartman 2023-02-02 16:48 ` Marc Zyngier 0 siblings, 1 reply; 5+ messages in thread From: Greg Kroah-Hartman @ 2023-02-02 15:15 UTC (permalink / raw) To: linux-kernel; +Cc: Greg Kroah-Hartman, Marc Zyngier, Thomas Gleixner 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: Marc Zyngier <maz@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- kernel/irq/irqdomain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 8fe1da9614ee..e2096b51c004 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -1915,7 +1915,7 @@ static void debugfs_add_domain_dir(struct irq_domain *d) static void debugfs_remove_domain_dir(struct irq_domain *d) { - debugfs_remove(debugfs_lookup(d->name, domain_dir)); + debugfs_lookup_and_remove(d->name, domain_dir); } void __init irq_domain_debugfs_init(struct dentry *root) -- 2.39.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() 2023-02-02 15:15 [PATCH] kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() Greg Kroah-Hartman @ 2023-02-02 16:48 ` Marc Zyngier 2023-02-02 16:51 ` Greg Kroah-Hartman 0 siblings, 1 reply; 5+ messages in thread From: Marc Zyngier @ 2023-02-02 16:48 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-kernel, Thomas Gleixner On Thu, 02 Feb 2023 15:15:54 +0000, 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: Marc Zyngier <maz@kernel.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > --- > kernel/irq/irqdomain.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c > index 8fe1da9614ee..e2096b51c004 100644 > --- a/kernel/irq/irqdomain.c > +++ b/kernel/irq/irqdomain.c > @@ -1915,7 +1915,7 @@ static void debugfs_add_domain_dir(struct irq_domain *d) > > static void debugfs_remove_domain_dir(struct irq_domain *d) > { > - debugfs_remove(debugfs_lookup(d->name, domain_dir)); > + debugfs_lookup_and_remove(d->name, domain_dir); > } > > void __init irq_domain_debugfs_init(struct dentry *root) Reviewed-by: Marc Zyngier <maz@kernel.org> Maybe add a Cc stable to get this in 6.1? Thanks, M. -- Without deviation from the norm, progress is not possible. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() 2023-02-02 16:48 ` Marc Zyngier @ 2023-02-02 16:51 ` Greg Kroah-Hartman 2023-02-02 16:56 ` Marc Zyngier 0 siblings, 1 reply; 5+ messages in thread From: Greg Kroah-Hartman @ 2023-02-02 16:51 UTC (permalink / raw) To: Marc Zyngier; +Cc: linux-kernel, Thomas Gleixner On Thu, Feb 02, 2023 at 04:48:30PM +0000, Marc Zyngier wrote: > On Thu, 02 Feb 2023 15:15:54 +0000, > 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: Marc Zyngier <maz@kernel.org> > > Cc: Thomas Gleixner <tglx@linutronix.de> > > Cc: linux-kernel@vger.kernel.org > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > --- > > kernel/irq/irqdomain.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c > > index 8fe1da9614ee..e2096b51c004 100644 > > --- a/kernel/irq/irqdomain.c > > +++ b/kernel/irq/irqdomain.c > > @@ -1915,7 +1915,7 @@ static void debugfs_add_domain_dir(struct irq_domain *d) > > > > static void debugfs_remove_domain_dir(struct irq_domain *d) > > { > > - debugfs_remove(debugfs_lookup(d->name, domain_dir)); > > + debugfs_lookup_and_remove(d->name, domain_dir); > > } > > > > void __init irq_domain_debugfs_init(struct dentry *root) > > Reviewed-by: Marc Zyngier <maz@kernel.org> > > Maybe add a Cc stable to get this in 6.1? Sure, I can, but how often are irq domains removed from the system under a normal operation? Or you can take it through your tree and add that? I too can take it through mine, which ever is easier for you. thanks, greg k-h ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() 2023-02-02 16:51 ` Greg Kroah-Hartman @ 2023-02-02 16:56 ` Marc Zyngier 2023-02-03 6:04 ` Greg Kroah-Hartman 0 siblings, 1 reply; 5+ messages in thread From: Marc Zyngier @ 2023-02-02 16:56 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-kernel, Thomas Gleixner On Thu, 02 Feb 2023 16:51:50 +0000, Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Thu, Feb 02, 2023 at 04:48:30PM +0000, Marc Zyngier wrote: > > On Thu, 02 Feb 2023 15:15:54 +0000, > > 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: Marc Zyngier <maz@kernel.org> > > > Cc: Thomas Gleixner <tglx@linutronix.de> > > > Cc: linux-kernel@vger.kernel.org > > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > > --- > > > kernel/irq/irqdomain.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c > > > index 8fe1da9614ee..e2096b51c004 100644 > > > --- a/kernel/irq/irqdomain.c > > > +++ b/kernel/irq/irqdomain.c > > > @@ -1915,7 +1915,7 @@ static void debugfs_add_domain_dir(struct irq_domain *d) > > > > > > static void debugfs_remove_domain_dir(struct irq_domain *d) > > > { > > > - debugfs_remove(debugfs_lookup(d->name, domain_dir)); > > > + debugfs_lookup_and_remove(d->name, domain_dir); > > > } > > > > > > void __init irq_domain_debugfs_init(struct dentry *root) > > > > Reviewed-by: Marc Zyngier <maz@kernel.org> > > > > Maybe add a Cc stable to get this in 6.1? > > Sure, I can, but how often are irq domains removed from the system under > a normal operation? As many time as you want if you're doing virtualisation and have the right sort of HW (anything GICv4.x, for example, which will create per-VM irqdomains). > Or you can take it through your tree and add that? I too can take > it through mine, which ever is easier for you. Sure, I can queue that, although that will probably be next week. Thanks, M. -- Without deviation from the norm, progress is not possible. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() 2023-02-02 16:56 ` Marc Zyngier @ 2023-02-03 6:04 ` Greg Kroah-Hartman 0 siblings, 0 replies; 5+ messages in thread From: Greg Kroah-Hartman @ 2023-02-03 6:04 UTC (permalink / raw) To: Marc Zyngier; +Cc: linux-kernel, Thomas Gleixner On Thu, Feb 02, 2023 at 04:56:50PM +0000, Marc Zyngier wrote: > On Thu, 02 Feb 2023 16:51:50 +0000, > Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > > > On Thu, Feb 02, 2023 at 04:48:30PM +0000, Marc Zyngier wrote: > > > On Thu, 02 Feb 2023 15:15:54 +0000, > > > 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: Marc Zyngier <maz@kernel.org> > > > > Cc: Thomas Gleixner <tglx@linutronix.de> > > > > Cc: linux-kernel@vger.kernel.org > > > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > > > --- > > > > kernel/irq/irqdomain.c | 2 +- > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c > > > > index 8fe1da9614ee..e2096b51c004 100644 > > > > --- a/kernel/irq/irqdomain.c > > > > +++ b/kernel/irq/irqdomain.c > > > > @@ -1915,7 +1915,7 @@ static void debugfs_add_domain_dir(struct irq_domain *d) > > > > > > > > static void debugfs_remove_domain_dir(struct irq_domain *d) > > > > { > > > > - debugfs_remove(debugfs_lookup(d->name, domain_dir)); > > > > + debugfs_lookup_and_remove(d->name, domain_dir); > > > > } > > > > > > > > void __init irq_domain_debugfs_init(struct dentry *root) > > > > > > Reviewed-by: Marc Zyngier <maz@kernel.org> > > > > > > Maybe add a Cc stable to get this in 6.1? > > > > Sure, I can, but how often are irq domains removed from the system under > > a normal operation? > > As many time as you want if you're doing virtualisation and have the > right sort of HW (anything GICv4.x, for example, which will create > per-VM irqdomains). Ok, I'll queue this up now and get it to Linus for 6.2-final. thanks, greg k-h ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-02-03 6:11 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-02-02 15:15 [PATCH] kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() Greg Kroah-Hartman 2023-02-02 16:48 ` Marc Zyngier 2023-02-02 16:51 ` Greg Kroah-Hartman 2023-02-02 16:56 ` Marc Zyngier 2023-02-03 6:04 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox