From: Kinglong Mee Date: Fri, 17 Jul 2015 23:33:31 +0000 (+0800) Subject: nfsd: New counter for generating client confirm verifier X-Git-Tag: v4.14-rc1~4752^2~31 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=19311aa8353644c18d609291e0078843d1c22ece;p=platform%2Fkernel%2Flinux-rpi.git nfsd: New counter for generating client confirm verifier If using clientid_counter, it seems possible that gen_confirm could generate the same verifier for the same client in some situations. Add a new counter for client confirm verifier to make sure gen_confirm generates a different verifier on each call for the same clientid. Signed-off-by: Kinglong Mee Reviewed-by: Jeff Layton Signed-off-by: J. Bruce Fields --- diff --git a/fs/nfsd/netns.h b/fs/nfsd/netns.h index ea6749a..d8b16c2 100644 --- a/fs/nfsd/netns.h +++ b/fs/nfsd/netns.h @@ -110,6 +110,7 @@ struct nfsd_net { unsigned int max_connections; u32 clientid_counter; + u32 clverifier_counter; struct svc_serv *nfsd_serv; }; diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 5018b6ec..cd8c331 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -1899,7 +1899,7 @@ static void gen_confirm(struct nfs4_client *clp, struct nfsd_net *nn) * __force to keep sparse happy */ verf[0] = (__force __be32)get_seconds(); - verf[1] = (__force __be32)nn->clientid_counter; + verf[1] = (__force __be32)nn->clverifier_counter++; memcpy(clp->cl_confirm.data, verf, sizeof(clp->cl_confirm.data)); }