From 6231d6399ccbd08da1b4106a747c36742fc4e14e Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Thu, 11 Oct 2007 15:11:51 -0400 Subject: [PATCH] --- yaml --- r: 69302 b: refs/heads/master c: 05c88babab957dfd63bd351b25042d80bd854dd0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfs/delegation.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a9eea18ac70f..ce8b3cd05ae0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f43bf0bebed7c33b698a8a25f95812f9e87c3843 +refs/heads/master: 05c88babab957dfd63bd351b25042d80bd854dd0 diff --git a/trunk/fs/nfs/delegation.c b/trunk/fs/nfs/delegation.c index 7a1b6e869f9c..af8b235d405d 100644 --- a/trunk/fs/nfs/delegation.c +++ b/trunk/fs/nfs/delegation.c @@ -109,6 +109,7 @@ static void nfs_delegation_claim_opens(struct inode *inode, const nfs4_stateid * void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred, struct nfs_openres *res) { struct nfs_delegation *delegation = NFS_I(inode)->delegation; + struct rpc_cred *oldcred; if (delegation == NULL) return; @@ -116,11 +117,12 @@ void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred, st sizeof(delegation->stateid.data)); delegation->type = res->delegation_type; delegation->maxsize = res->maxsize; - put_rpccred(cred); + oldcred = delegation->cred; delegation->cred = get_rpccred(cred); delegation->flags &= ~NFS_DELEGATION_NEED_RECLAIM; NFS_I(inode)->delegation_state = delegation->type; smp_wmb(); + put_rpccred(oldcred); } /*