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: Sicong Huang <huangsicong@iie.ac.cn> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
committed by
Chuck Lever
parent
6939ace1f2
commit
2ffda63c98
@@ -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_clnt_odstate *odstate, u32 dl_type)
|
||||||
{
|
{
|
||||||
struct nfs4_delegation *dp;
|
struct nfs4_delegation *dp;
|
||||||
|
struct nfs4_stid *stid;
|
||||||
long n;
|
long n;
|
||||||
|
|
||||||
dprintk("NFSD alloc_init_deleg\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;
|
goto out_dec;
|
||||||
if (delegation_blocked(&fp->fi_fhandle))
|
if (delegation_blocked(&fp->fi_fhandle))
|
||||||
goto out_dec;
|
goto out_dec;
|
||||||
dp = delegstateid(nfs4_alloc_stid(clp, deleg_slab, nfs4_free_deleg));
|
stid = nfs4_alloc_stid(clp, deleg_slab, nfs4_free_deleg);
|
||||||
if (dp == NULL)
|
if (stid == NULL)
|
||||||
goto out_dec;
|
goto out_dec;
|
||||||
|
dp = delegstateid(stid);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* delegation seqid's are never incremented. The 4.1 special
|
* delegation seqid's are never incremented. The 4.1 special
|
||||||
|
Reference in New Issue
Block a user