sunrpc: fix loss of task->tk_status after rpc_delay call in xprt_alloc_slot
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sat, 19 May 2012 16:12:53 +0000 (12:12 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 9 Jun 2012 15:36:09 +0000 (00:36 +0900)
commitc7faf5bbaeba30053627de3b333d3c17e051ba80
treeb64389cc38ef5aac36ce7dff7e084aaf3738ffd9
parent7a0786dcc32e5d16721449d43cfb90d7869d08ea
sunrpc: fix loss of task->tk_status after rpc_delay call in xprt_alloc_slot

commit 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 upstream.

xprt_alloc_slot will call rpc_delay() to make the task wait a bit before
retrying when it gets back an -ENOMEM error from xprt_dynamic_alloc_slot.
The problem is that rpc_delay will clear the task->tk_status, causing
call_reserveresult to abort the task.

The solution is simply to let call_reserveresult handle the ENOMEM error
directly.

Reported-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/sunrpc/clnt.c
net/sunrpc/xprt.c