[PATCH v10 8/9] net: add symlinks to ref_tracker_dir for netns

Jeff Layton jlayton at kernel.org
Tue May 27 17:37:00 UTC 2025


On Tue, 2025-05-27 at 06:37 -0700, Eric Dumazet wrote:
> On Tue, May 27, 2025 at 6:35 AM Eric Dumazet <edumazet at google.com> wrote:
> > 
> > On Tue, May 27, 2025 at 4:34 AM Jeff Layton <jlayton at kernel.org> wrote:
> > > 
> > > After assigning the inode number to the namespace, use it to create a
> > > unique name for each netns refcount tracker with the ns.inum and
> > > net_cookie values in it, and register a symlink to the debugfs file for
> > > it.
> > > 
> > > init_net is registered before the ref_tracker dir is created, so add a
> > > late_initcall() to register its files and symlinks.
> > > 
> > > Signed-off-by: Jeff Layton <jlayton at kernel.org>
> > > ---
> > >  net/core/net_namespace.c | 30 +++++++++++++++++++++++++++++-
> > >  1 file changed, 29 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
> > > index 8708eb975295ffb78de35fcf4abef7cc281f5a51..39b01af90d240df48827e5c3159c3e2253e0a44d 100644
> > > --- a/net/core/net_namespace.c
> > > +++ b/net/core/net_namespace.c
> > > @@ -791,12 +791,40 @@ struct net *get_net_ns_by_pid(pid_t pid)
> > >  }
> > >  EXPORT_SYMBOL_GPL(get_net_ns_by_pid);
> > > 
> > > +#ifdef CONFIG_NET_NS_REFCNT_TRACKER
> > > +static void net_ns_net_debugfs(struct net *net)
> > > +{
> > > +       ref_tracker_dir_symlink(&net->refcnt_tracker, "netns--%lx-%u-refcnt",
> > > +                               net->net_cookie, net->ns.inum);
> > 
> > With proper annotations, you should be able to catch format error as in:
> > 
> > warning: format ‘%lx’ expects argument of type ‘long unsigned int’,
> > but argument x has type ‘u64’ {aka ‘long long unsigned int’}
> > [-Wformat=]
> 
> Reference:
> 
> include/linux/compiler_attributes.h:158:#define __printf(a, b)
>          __attribute__((__format__(printf, a, b)))


I have __printf annotations on that function:

    #define __ostream_printf __printf(2, 3)

    void __ostream_printf ref_tracker_dir_symlink(struct ref_tracker_dir *dir, const char *fmt, ...)

That warning is complaining that I'm trying to pass off a u64 as a
long. I guess that means that the format needs to be 
"netns-%llx-%u-refcnt" ?

I'll fix that and send in the next version, once I sort out the i915
mess.
-- 
Jeff Layton <jlayton at kernel.org>


More information about the dri-devel mailing list