Re: [PATCH 4/4] net: register debugfs file for net_device refcnt tracker
From: Andrew Lunn
Date: Mon Apr 14 2025 - 19:16:30 EST
On Mon, Apr 14, 2025 at 03:27:36PM -0700, Kuniyuki Iwashima wrote:
> From: Jeff Layton <jlayton@xxxxxxxxxx>
> Date: Mon, 14 Apr 2025 10:45:49 -0400
> > As a nearly-final step in register_netdevice(), finalize the name in the
> > refcount tracker, and register a debugfs file for it.
> >
> > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> > ---
> > net/core/dev.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/net/core/dev.c b/net/core/dev.c
> > index 2f7f5fd9ffec7c0fc219eb6ba57d57a55134186e..db9cac702bb2230ca2bbc2c04ac0a77482c65fc3 100644
> > --- a/net/core/dev.c
> > +++ b/net/core/dev.c
> > @@ -10994,6 +10994,8 @@ int register_netdevice(struct net_device *dev)
> > dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
> > rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL, 0, NULL);
> >
> > + /* Register debugfs file for the refcount tracker */
> > + ref_tracker_dir_debugfs(&dev->refcnt_tracker, dev->name);
>
> dev->name is not unique across network namespaces, so we should specify
> a netns-specific parent dir here.
>
> For example, syzkaller creates a bunch of devices with the same name in
> different network namespaces.
>
> Then, we also need to move the file when dev is moved to another netns
> in __dev_change_net_namespace().
The address of dev should be unique, and does not change as the netdev
moves between network name spaces. So you could postfix it with the
hashed version of an address, as produced by %pK. This is debugfs, it
does not need to be too friendly.
Andrew