On Wed, 2020-10-07 at 15:02 -0700, Dai Ngo wrote: > On 10/7/20 2:07 PM, trondmy@xxxxxxxxxx wrote: > > From: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > > > If a container sets a net namespace specific uniquifier, then use > > that > > in the setclientid/exchangeid process. > > > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > --- > > fs/nfs/nfs4proc.c | 23 ++++++++++++++++++++--- > > 1 file changed, 20 insertions(+), 3 deletions(-) > > > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > > index 3a39887e0e6e..a1dd46e7440b 100644 > > --- a/fs/nfs/nfs4proc.c > > +++ b/fs/nfs/nfs4proc.c > > @@ -63,6 +63,7 @@ > > #include "callback.h" > > #include "pnfs.h" > > #include "netns.h" > > +#include "sysfs.h" > > #include "nfs4idmap.h" > > #include "nfs4session.h" > > #include "fscache.h" > > @@ -6007,9 +6008,25 @@ static void nfs4_init_boot_verifier(const > > struct nfs_client *clp, > > } > > > > static size_t > > -nfs4_get_uniquifier(char *buf, size_t buflen) > > +nfs4_get_uniquifier(struct nfs_client *clp, char *buf, size_t > > buflen) > > { > > + struct nfs_net *nn = net_generic(clp->cl_net, nfs_net_id); > > + struct nfs_netns_client *nn_clp = nn->nfs_client; > > + const char *id; > > + size_t len; > > + > > buf[0] = '\0'; > > + > > + if (nn_clp) { > > + rcu_read_lock(); > > + id = rcu_dereference(nn_clp->identifier); > > + if (id && *id != '\0') > > + len = strlcpy(buf, id, buflen); > > + rcu_read_unlock(); > > + if (len) > > I think 'len' can be uninitialized here. Thanks. Yes, already noted and fixed in v2. > > -Dai > > > + return len; > > + } > > + > > if (nfs4_client_id_uniquifier[0] != '\0') > > return strlcpy(buf, nfs4_client_id_uniquifier, buflen); > > return 0; > > @@ -6034,7 +6051,7 @@ nfs4_init_nonuniform_client_string(struct > > nfs_client *clp) > > 1; > > rcu_read_unlock(); > > > > - buflen = nfs4_get_uniquifier(buf, sizeof(buf)); > > + buflen = nfs4_get_uniquifier(clp, buf, sizeof(buf)); > > if (buflen) > > len += buflen + 1; > > > > @@ -6081,7 +6098,7 @@ nfs4_init_uniform_client_string(struct > > nfs_client *clp) > > len = 10 + 10 + 1 + 10 + 1 + > > strlen(clp->cl_rpcclient->cl_nodename) + 1; > > > > - buflen = nfs4_get_uniquifier(buf, sizeof(buf)); > > + buflen = nfs4_get_uniquifier(clp, buf, sizeof(buf)); > > if (buflen) > > len += buflen + 1; > > -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx