From: NeilBrown It is the responsibility of the code that runs in the do_recall thread to drop the reference to the delegation. So if we fail to run that thread, then we need to do it ourselves here. Signed-off-by: J. Bruce Fields Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 25-akpm/fs/nfsd/nfs4state.c | 1 + 1 files changed, 1 insertion(+) diff -puN fs/nfsd/nfs4state.c~nfsd4-fix-delegation-refcount-leak fs/nfsd/nfs4state.c --- 25/fs/nfsd/nfs4state.c~nfsd4-fix-delegation-refcount-leak 2005-03-07 23:56:02.000000000 -0800 +++ 25-akpm/fs/nfsd/nfs4state.c 2005-03-07 23:56:02.000000000 -0800 @@ -1366,6 +1366,7 @@ void nfsd_break_deleg_cb(struct file_loc printk(KERN_INFO "NFSD: Callback thread failed for " "for client (clientid %08x/%08x)\n", clp->cl_clientid.cl_boot, clp->cl_clientid.cl_id); + nfs4_put_delegation(dp); } } _