forked from luck/tmp_suning_uos_patched
nfsd: fix fi_delegees leak when fi_had_conflict returns true
Currently, nfs4_set_delegation takes a reference to an existing delegation and then checks to see if there is a conflict. If there is one, then it doesn't release that reference. Change the code to take the reference after the check and only if there is no conflict. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Cc: stable@vger.kernel.org Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
b1940cd21c
commit
94ae1db226
|
@ -3897,11 +3897,11 @@ nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh,
|
||||||
status = nfs4_setlease(dp);
|
status = nfs4_setlease(dp);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
atomic_inc(&fp->fi_delegees);
|
|
||||||
if (fp->fi_had_conflict) {
|
if (fp->fi_had_conflict) {
|
||||||
status = -EAGAIN;
|
status = -EAGAIN;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
atomic_inc(&fp->fi_delegees);
|
||||||
hash_delegation_locked(dp, fp);
|
hash_delegation_locked(dp, fp);
|
||||||
status = 0;
|
status = 0;
|
||||||
out_unlock:
|
out_unlock:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user