NFSv4: Hold the delegation spinlock when updating the seqid
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
index e80419a6..7ebeb57 100644
--- a/fs/nfs/delegation.c
+++ b/fs/nfs/delegation.c
@@ -387,8 +387,10 @@ int nfs_inode_set_delegation(struct inode *inode, const struct cred *cred,
/* Is this an update of the existing delegation? */
if (nfs4_stateid_match_other(&old_delegation->stateid,
&delegation->stateid)) {
+ spin_lock(&old_delegation->lock);
nfs_update_inplace_delegation(old_delegation,
delegation);
+ spin_unlock(&old_delegation->lock);
goto out;
}
/*