From 69a3594bed0dde872543ebd45dec18b84f3bc51c Mon Sep 17 00:00:00 2001 From: Chuck Lever Date: Thu, 16 Nov 2006 15:03:38 -0500 Subject: [PATCH] --- yaml --- r: 42529 b: refs/heads/master c: 2b577f1f14c8d83ba9400ec8accaf4a208f4f36a h: refs/heads/master i: 42527: ce11723197579e89f3e9303bd0a71802ef8788a2 v: v3 --- [refs] | 2 +- trunk/net/sunrpc/pmap_clnt.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 5b96e7809e87..75d28fae378a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a18030445fd4dd20e2248007b5d1cf0b5d89c69d +refs/heads/master: 2b577f1f14c8d83ba9400ec8accaf4a208f4f36a diff --git a/trunk/net/sunrpc/pmap_clnt.c b/trunk/net/sunrpc/pmap_clnt.c index 8d2e10fc3df9..3946ec3eb517 100644 --- a/trunk/net/sunrpc/pmap_clnt.c +++ b/trunk/net/sunrpc/pmap_clnt.c @@ -101,14 +101,14 @@ void rpc_getport(struct rpc_task *task) /* Autobind on cloned rpc clients is discouraged */ BUG_ON(clnt->cl_parent != clnt); + status = -EACCES; /* tell caller to check again */ + if (xprt_test_and_set_binding(xprt)) + goto bailout_nowake; + /* Put self on queue before sending rpcbind request, in case * pmap_getport_done completes before we return from rpc_run_task */ rpc_sleep_on(&xprt->binding, task, NULL, NULL); - status = -EACCES; /* tell caller to check again */ - if (xprt_test_and_set_binding(xprt)) - goto bailout_nofree; - /* Someone else may have bound if we slept */ status = 0; if (xprt_bound(xprt)) @@ -143,8 +143,9 @@ void rpc_getport(struct rpc_task *task) pmap_map_free(map); xprt_put(xprt); bailout_nofree: - task->tk_status = status; pmap_wake_portmap_waiters(xprt, status); +bailout_nowake: + task->tk_status = status; } #ifdef CONFIG_ROOT_NFS