clnt.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletion(-) diff -u --recursive --new-file --show-c-function linux-2.6.7/net/sunrpc/clnt.c linux-2.6.7-00-fix_rpcclone/net/sunrpc/clnt.c --- linux-2.6.7/net/sunrpc/clnt.c 2004-07-02 09:40:17.000000000 -0400 +++ linux-2.6.7-00-fix_rpcclone/net/sunrpc/clnt.c 2004-07-02 18:19:31.000000000 -0400 @@ -196,7 +196,15 @@ rpc_clone_client(struct rpc_clnt *clnt) memcpy(new, clnt, sizeof(*new)); atomic_set(&new->cl_count, 1); atomic_set(&new->cl_users, 0); - atomic_inc(&new->cl_parent->cl_count); + new->cl_parent = clnt; + atomic_inc(&clnt->cl_count); + /* Duplicate portmapper */ + rpc_init_wait_queue(&new->cl_pmap_default.pm_bindwait, "bindwait"); + /* Turn off autobind on clones */ + new->cl_autobind = 0; + new->cl_oneshot = 0; + new->cl_dead = 0; + rpc_init_rtt(&new->cl_rtt_default, clnt->cl_xprt->timeout.to_initval); if (new->cl_auth) atomic_inc(&new->cl_auth->au_count); return new;