NFSv4: nfs4_locku_done must release the sequence id
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 29 Oct 2012 22:53:23 +0000 (18:53 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 31 Oct 2012 19:10:04 +0000 (15:10 -0400)
If the state recovery machinery is triggered by the call to
nfs4_async_handle_error() then we can deadlock.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
fs/nfs/nfs4proc.c

index e0423bb..1465364 100644 (file)
@@ -4531,6 +4531,7 @@ static void nfs4_locku_done(struct rpc_task *task, void *data)
                        if (nfs4_async_handle_error(task, calldata->server, NULL) == -EAGAIN)
                                rpc_restart_call_prepare(task);
        }
+       nfs_release_seqid(calldata->arg.seqid);
 }
 
 static void nfs4_locku_prepare(struct rpc_task *task, void *data)