revoked delegations are unhashed but are kept around in nfsv4.1 and we better hang on to dp_file in this case. Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxxxxxx> --- fs/nfsd/nfs4state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 8840206..7f78ff5 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -411,6 +411,8 @@ static void nfs4_free_stid(struct kmem_cache *slab, struct nfs4_stid *s) { remove_stid(&dp->dl_stid); if (atomic_dec_and_test(&dp->dl_count)) { + if (dp->dl_file) + put_nfs4_file(dp->dl_file); nfs4_free_stid(deleg_slab, &dp->dl_stid); num_delegations--; } @@ -450,8 +452,6 @@ static void unhash_stid(struct nfs4_stid *s) dp->dl_stid.sc_type = 0; nfs4_put_deleg_lease(dp->dl_file); spin_unlock(&recall_lock); - put_nfs4_file(dp->dl_file); - dp->dl_file = NULL; } -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html