From: Trond Myklebust We should really only be calling nfs_sb_deactive() at the end of an RPC call, to balance the nfs_sb_active() call in nfs_do_call_unlink(). OTOH, nfs_free_unlinkdata() can be called from a variety of other situations. Fix is to move the call to nfs_sb_deactive() into nfs_async_unlink_release(). Signed-off-by: Trond Myklebust Cc: Steve Dickson Signed-off-by: Andrew Morton --- fs/nfs/unlink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN fs/nfs/unlink.c~nfs-fix-nfs_free_unlinkdata fs/nfs/unlink.c --- a/fs/nfs/unlink.c~nfs-fix-nfs_free_unlinkdata +++ a/fs/nfs/unlink.c @@ -31,7 +31,6 @@ struct nfs_unlinkdata { static void nfs_free_unlinkdata(struct nfs_unlinkdata *data) { - nfs_sb_deactive(NFS_SERVER(data->dir)); iput(data->dir); put_rpccred(data->cred); kfree(data->args.name.name); @@ -116,6 +115,7 @@ static void nfs_async_unlink_release(voi struct nfs_unlinkdata *data = calldata; nfs_dec_sillycount(data->dir); + nfs_sb_deactive(NFS_SERVER(data->dir)); nfs_free_unlinkdata(data); } _