diff options
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r-- | net/sunrpc/clnt.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 16c9fbc1db69..e9d5f3c562e5 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -486,17 +486,13 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags) | |||
486 | /* Mask signals on RPC calls _and_ GSS_AUTH upcalls */ | 486 | /* Mask signals on RPC calls _and_ GSS_AUTH upcalls */ |
487 | rpc_task_sigmask(task, &oldset); | 487 | rpc_task_sigmask(task, &oldset); |
488 | 488 | ||
489 | rpc_call_setup(task, msg, 0); | ||
490 | |||
491 | /* Set up the call info struct and execute the task */ | 489 | /* Set up the call info struct and execute the task */ |
490 | rpc_call_setup(task, msg, 0); | ||
491 | if (task->tk_status == 0) { | ||
492 | atomic_inc(&task->tk_count); | ||
493 | rpc_execute(task); | ||
494 | } | ||
492 | status = task->tk_status; | 495 | status = task->tk_status; |
493 | if (status != 0) | ||
494 | goto out; | ||
495 | atomic_inc(&task->tk_count); | ||
496 | status = rpc_execute(task); | ||
497 | if (status == 0) | ||
498 | status = task->tk_status; | ||
499 | out: | ||
500 | rpc_put_task(task); | 496 | rpc_put_task(task); |
501 | rpc_restore_sigmask(&oldset); | 497 | rpc_restore_sigmask(&oldset); |
502 | return status; | 498 | return status; |