summaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
authorBenny Halevy <bhalevy@primarydata.com>2013-10-29 10:39:12 +0100
committerJ. Bruce Fields <bfields@redhat.com>2013-10-29 17:00:48 +0100
commit956c4fee446c568ad102625da931e259f22c67ee (patch)
tree5ab6f11336d060e1bbabb4d95f0761d2b7eb90f0 /fs/nfsd
parentnfsd: no need to unhash_stid before free (diff)
downloadlinux-956c4fee446c568ad102625da931e259f22c67ee.tar.xz
linux-956c4fee446c568ad102625da931e259f22c67ee.zip
nfsd4: need to destroy revoked delegations in destroy_client
[use list_splice_init] Signed-off-by: Benny Halevy <bhalevy@primarydata.com> [bfields: no need for recall_lock here] Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/nfs4state.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index a90949aefe80..21eb6788cb33 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -1129,6 +1129,11 @@ destroy_client(struct nfs4_client *clp)
dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru);
destroy_delegation(dp);
}
+ list_splice_init(&clp->cl_revoked, &reaplist);
+ while (!list_empty(&reaplist)) {
+ dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru);
+ destroy_revoked_delegation(dp);
+ }
while (!list_empty(&clp->cl_openowners)) {
oo = list_entry(clp->cl_openowners.next, struct nfs4_openowner, oo_perclient);
release_openowner(oo);