summaryrefslogtreecommitdiff
path: root/fs/nfs/nfs4proc.c
diff options
context:
space:
mode:
authorSteven Rostedt (VMware) <rostedt@goodmis.org>2018-11-02 14:03:01 -0400
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2018-11-02 14:03:01 -0400
commit5be22f588700fb3311d8d6dbc9845b139045d603 (patch)
treed830350c8e7d4ed9172a6971bf6e05808449f2d0 /fs/nfs/nfs4proc.c
parent917fa4e672939669f74f1c879b3aae6239f6719b (diff)
parent3b65f403d7d0e98484e8f2c9471808f2785a8235 (diff)
downloadlinux-rt-5be22f588700fb3311d8d6dbc9845b139045d603.tar.gz
Merge tag 'v4.14.73' into v4.14-rt
This is the 4.14.73 stable release Conflicts: kernel/time/tick-sched.c
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r--fs/nfs/nfs4proc.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index e0a9f811f0ef..4ce6ec109c2b 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2533,14 +2533,18 @@ static void nfs41_check_delegation_stateid(struct nfs4_state *state)
}
nfs4_stateid_copy(&stateid, &delegation->stateid);
- if (test_bit(NFS_DELEGATION_REVOKED, &delegation->flags) ||
- !test_and_clear_bit(NFS_DELEGATION_TEST_EXPIRED,
- &delegation->flags)) {
+ if (test_bit(NFS_DELEGATION_REVOKED, &delegation->flags)) {
rcu_read_unlock();
nfs_finish_clear_delegation_stateid(state, &stateid);
return;
}
+ if (!test_and_clear_bit(NFS_DELEGATION_TEST_EXPIRED,
+ &delegation->flags)) {
+ rcu_read_unlock();
+ return;
+ }
+
cred = get_rpccred(delegation->cred);
rcu_read_unlock();
status = nfs41_test_and_free_expired_stateid(server, &stateid, cred);