SUNRPC: Fix a potential memory leak in rpc_new_client
If the call to rpciod_up() fails, we currently leak a reference to the struct rpc_xprt. As part of the fix, we also remove the redundant check for xprt!=NULL. This is already taken care of by the callers. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
7b1f1fd184
commit
f05c124a70
1 changed files with 2 additions and 5 deletions
|
@ -304,10 +304,8 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, stru
|
|||
err = rpciod_up();
|
||||
if (err)
|
||||
goto out_no_rpciod;
|
||||
err = -EINVAL;
|
||||
if (!xprt)
|
||||
goto out_no_xprt;
|
||||
|
||||
err = -EINVAL;
|
||||
if (args->version >= program->nrvers)
|
||||
goto out_err;
|
||||
version = program->version[args->version];
|
||||
|
@ -382,10 +380,9 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, stru
|
|||
out_no_stats:
|
||||
kfree(clnt);
|
||||
out_err:
|
||||
xprt_put(xprt);
|
||||
out_no_xprt:
|
||||
rpciod_down();
|
||||
out_no_rpciod:
|
||||
xprt_put(xprt);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue