summaryrefslogtreecommitdiffstats
path: root/fs/binfmt_em86.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@hammerspace.com>2021-06-01 11:10:05 -0400
committerTrond Myklebust <trond.myklebust@hammerspace.com>2021-06-03 10:14:42 -0400
commitdfe1fe75e00e4c724ede7b9e593f6f680e446c5f (patch)
tree2a74d5f01498891b11d85c89085737df12838413 /fs/binfmt_em86.c
parentd1b5c230e9cb6dddeab23f0f0c808e2b1c28d1b6 (diff)
downloadlinux-stable-dfe1fe75e00e4c724ede7b9e593f6f680e446c5f.tar.gz
linux-stable-dfe1fe75e00e4c724ede7b9e593f6f680e446c5f.tar.bz2
linux-stable-dfe1fe75e00e4c724ede7b9e593f6f680e446c5f.zip
NFSv4: Fix deadlock between nfs4_evict_inode() and nfs4_opendata_get_inode()
If the inode is being evicted, but has to return a delegation first, then it can cause a deadlock in the corner case where the server reboots before the delegreturn completes, but while the call to iget5_locked() in nfs4_opendata_get_inode() is waiting for the inode free to complete. Since the open call still holds a session slot, the reboot recovery cannot proceed. In order to break the logjam, we can turn the delegation return into a privileged operation for the case where we're evicting the inode. We know that in that case, there can be no other state recovery operation that conflicts. Reported-by: zhangxiaoxu (A) <zhangxiaoxu5@huawei.com> Fixes: 5fcdfacc01f3 ("NFSv4: Return delegations synchronously in evict_inode") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'fs/binfmt_em86.c')
0 files changed, 0 insertions, 0 deletions