* [PATCH 5.19 005/192] net: mvpp2: debugfs: fix memory leak when using debugfs_lookup()
[not found] <20220913140410.043243217@linuxfoundation.org>
@ 2022-09-13 14:01 ` Greg Kroah-Hartman
2022-09-13 16:48 ` Russell King (Oracle)
0 siblings, 1 reply; 3+ messages in thread
From: Greg Kroah-Hartman @ 2022-09-13 14:01 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, stable, Marcin Wojtas, Russell King,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, stable
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
commit fe2c9c61f668cde28dac2b188028c5299cedcc1e upstream.
When calling debugfs_lookup() the result must have dput() called on it,
otherwise the memory will leak over time. Fix this up to be much
simpler logic and only create the root debugfs directory once when the
driver is first accessed. That resolves the memory leak and makes
things more obvious as to what the intent is.
Cc: Marcin Wojtas <mw@semihalf.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org
Cc: stable <stable@kernel.org>
Fixes: 21da57a23125 ("net: mvpp2: add a debugfs interface for the Header Parser")
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
@@ -700,10 +700,10 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *p
void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name)
{
- struct dentry *mvpp2_dir, *mvpp2_root;
+ static struct dentry *mvpp2_root;
+ struct dentry *mvpp2_dir;
int ret, i;
- mvpp2_root = debugfs_lookup(MVPP2_DRIVER_NAME, NULL);
if (!mvpp2_root)
mvpp2_root = debugfs_create_dir(MVPP2_DRIVER_NAME, NULL);
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 5.19 005/192] net: mvpp2: debugfs: fix memory leak when using debugfs_lookup()
2022-09-13 14:01 ` [PATCH 5.19 005/192] net: mvpp2: debugfs: fix memory leak when using debugfs_lookup() Greg Kroah-Hartman
@ 2022-09-13 16:48 ` Russell King (Oracle)
2022-09-15 8:35 ` Greg Kroah-Hartman
0 siblings, 1 reply; 3+ messages in thread
From: Russell King (Oracle) @ 2022-09-13 16:48 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-kernel, stable, Marcin Wojtas, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, netdev, stable
On Tue, Sep 13, 2022 at 04:01:51PM +0200, Greg Kroah-Hartman wrote:
> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> commit fe2c9c61f668cde28dac2b188028c5299cedcc1e upstream.
>
> When calling debugfs_lookup() the result must have dput() called on it,
> otherwise the memory will leak over time. Fix this up to be much
> simpler logic and only create the root debugfs directory once when the
> driver is first accessed. That resolves the memory leak and makes
> things more obvious as to what the intent is.
>
> Cc: Marcin Wojtas <mw@semihalf.com>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: netdev@vger.kernel.org
> Cc: stable <stable@kernel.org>
> Fixes: 21da57a23125 ("net: mvpp2: add a debugfs interface for the Header Parser")
> Signed-off-by: David S. Miller <davem@davemloft.net>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
> drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
> @@ -700,10 +700,10 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *p
>
> void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name)
> {
> - struct dentry *mvpp2_dir, *mvpp2_root;
> + static struct dentry *mvpp2_root;
> + struct dentry *mvpp2_dir;
> int ret, i;
>
> - mvpp2_root = debugfs_lookup(MVPP2_DRIVER_NAME, NULL);
> if (!mvpp2_root)
> mvpp2_root = debugfs_create_dir(MVPP2_DRIVER_NAME, NULL);
This looks broken to me.
What happens if this is built as a module, and the module is loaded,
binds (and creates the directory), then is removed, and then re-
inserted? Nothing removes the old directory, so doesn't
debugfs_create_dir() fail, resulting in subsequent failure to add
any subsequent debugfs entries?
I don't think this patch should be backported to stable trees until
this point is addressed.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 5.19 005/192] net: mvpp2: debugfs: fix memory leak when using debugfs_lookup()
2022-09-13 16:48 ` Russell King (Oracle)
@ 2022-09-15 8:35 ` Greg Kroah-Hartman
0 siblings, 0 replies; 3+ messages in thread
From: Greg Kroah-Hartman @ 2022-09-15 8:35 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: linux-kernel, stable, Marcin Wojtas, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, netdev, stable
On Tue, Sep 13, 2022 at 05:48:58PM +0100, Russell King (Oracle) wrote:
> On Tue, Sep 13, 2022 at 04:01:51PM +0200, Greg Kroah-Hartman wrote:
> > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >
> > commit fe2c9c61f668cde28dac2b188028c5299cedcc1e upstream.
> >
> > When calling debugfs_lookup() the result must have dput() called on it,
> > otherwise the memory will leak over time. Fix this up to be much
> > simpler logic and only create the root debugfs directory once when the
> > driver is first accessed. That resolves the memory leak and makes
> > things more obvious as to what the intent is.
> >
> > Cc: Marcin Wojtas <mw@semihalf.com>
> > Cc: Russell King <linux@armlinux.org.uk>
> > Cc: "David S. Miller" <davem@davemloft.net>
> > Cc: Eric Dumazet <edumazet@google.com>
> > Cc: Jakub Kicinski <kuba@kernel.org>
> > Cc: Paolo Abeni <pabeni@redhat.com>
> > Cc: netdev@vger.kernel.org
> > Cc: stable <stable@kernel.org>
> > Fixes: 21da57a23125 ("net: mvpp2: add a debugfs interface for the Header Parser")
> > Signed-off-by: David S. Miller <davem@davemloft.net>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > ---
> > drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
> > +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
> > @@ -700,10 +700,10 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *p
> >
> > void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name)
> > {
> > - struct dentry *mvpp2_dir, *mvpp2_root;
> > + static struct dentry *mvpp2_root;
> > + struct dentry *mvpp2_dir;
> > int ret, i;
> >
> > - mvpp2_root = debugfs_lookup(MVPP2_DRIVER_NAME, NULL);
> > if (!mvpp2_root)
> > mvpp2_root = debugfs_create_dir(MVPP2_DRIVER_NAME, NULL);
>
> This looks broken to me.
>
> What happens if this is built as a module, and the module is loaded,
> binds (and creates the directory), then is removed, and then re-
> inserted? Nothing removes the old directory, so doesn't
> debugfs_create_dir() fail, resulting in subsequent failure to add
> any subsequent debugfs entries?
>
> I don't think this patch should be backported to stable trees until
> this point is addressed.
I'll drop this for now and get back to the fixup next week.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-09-15 8:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20220913140410.043243217@linuxfoundation.org>
2022-09-13 14:01 ` [PATCH 5.19 005/192] net: mvpp2: debugfs: fix memory leak when using debugfs_lookup() Greg Kroah-Hartman
2022-09-13 16:48 ` Russell King (Oracle)
2022-09-15 8:35 ` 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;
as well as URLs for NNTP newsgroup(s).