Commit 2ffda63c authored by Sicong Huang's avatar Sicong Huang Committed by Chuck Lever
Browse files

NFSD: clean up alloc_init_deleg()



Modify the conditional statement for null pointer check in the function
'alloc_init_deleg' to make this function more robust and clear. Otherwise,
this function may have potential pointer dereference problem in the future,
when modifying or expanding the nfs4_delegation structure.

Signed-off-by: default avatarSicong Huang <huangsicong@iie.ac.cn>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 6939ace1
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1160,6 +1160,7 @@ alloc_init_deleg(struct nfs4_client *clp, struct nfs4_file *fp,
		 struct nfs4_clnt_odstate *odstate, u32 dl_type)
{
	struct nfs4_delegation *dp;
	struct nfs4_stid *stid;
	long n;

	dprintk("NFSD alloc_init_deleg\n");
@@ -1168,9 +1169,10 @@ alloc_init_deleg(struct nfs4_client *clp, struct nfs4_file *fp,
		goto out_dec;
	if (delegation_blocked(&fp->fi_fhandle))
		goto out_dec;
	dp = delegstateid(nfs4_alloc_stid(clp, deleg_slab, nfs4_free_deleg));
	if (dp == NULL)
	stid = nfs4_alloc_stid(clp, deleg_slab, nfs4_free_deleg);
	if (stid == NULL)
		goto out_dec;
	dp = delegstateid(stid);

	/*
	 * delegation seqid's are never incremented.  The 4.1 special