]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFSv4: Don't call put_rpccred() under the rcu_read_lock()
authorTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 26 Feb 2015 17:54:46 +0000 (12:54 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Mar 2015 13:11:10 +0000 (14:11 +0100)
commit 7c0af9ffb7bb4e5355470fa60b3eb711ddf226fa upstream.

put_rpccred() can sleep.

Fixes: 8f649c3762547 ("NFSv4: Fix the locking in nfs_inode_reclaim_delegation()")
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfs/delegation.c

index 7f3f60641344437ab4f493eebf6093e39957c3be..4030b558b07e3d3c086ae3a1bc04a62835550e58 100644 (file)
@@ -177,8 +177,8 @@ void nfs_inode_reclaim_delegation(struct inode *inode, struct rpc_cred *cred,
                                  &delegation->flags);
                        NFS_I(inode)->delegation_state = delegation->type;
                        spin_unlock(&delegation->lock);
-                       put_rpccred(oldcred);
                        rcu_read_unlock();
+                       put_rpccred(oldcred);
                        trace_nfs4_reclaim_delegation(inode, res->delegation_type);
                } else {
                        /* We appear to have raced with a delegation return. */