diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-04-09 12:56:52 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-04-09 13:19:35 -0400 |
commit | fa332941c0c7c00e3420078268b7558d0ef792b5 (patch) | |
tree | d1063f53f5b19de2575c9007df4054773098f411 /fs | |
parent | f05c124a70a4953a66acbd6d6c601ea1eb5d0fa7 (diff) | |
download | linux-stable-fa332941c0c7c00e3420078268b7558d0ef792b5.tar.gz linux-stable-fa332941c0c7c00e3420078268b7558d0ef792b5.tar.bz2 linux-stable-fa332941c0c7c00e3420078268b7558d0ef792b5.zip |
NFSv4: Fix another potential state manager deadlock
Don't hold the NFSv4 sequence id while we check for open permission.
The call to ACCESS may block due to reboot recovery.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 26431cf62ddb..0ad025eb523b 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -1046,6 +1046,7 @@ static struct nfs4_state *nfs4_try_open_cached(struct nfs4_opendata *opendata) /* Save the delegation */ nfs4_stateid_copy(&stateid, &delegation->stateid); rcu_read_unlock(); + nfs_release_seqid(opendata->o_arg.seqid); ret = nfs_may_open(state->inode, state->owner->so_cred, open_mode); if (ret != 0) goto out; |