summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/clnt.c
diff options
context:
space:
mode:
authorJ. Bruce Fields2016-05-20 23:07:17 +0200
committerJ. Bruce Fields2016-06-15 16:32:25 +0200
commit1208fd569c07ab84aa5d024abd863267c2953b4a (patch)
tree39fccf3a8cd1e2d9af0c9f1321436952e12ec80b /net/sunrpc/clnt.c
parentnfsd: Fix NFSD_MDS_PR_KEY on 32-bit by adding ULL postfix (diff)
downloadkernel-qcow2-linux-1208fd569c07ab84aa5d024abd863267c2953b4a.tar.gz
kernel-qcow2-linux-1208fd569c07ab84aa5d024abd863267c2953b4a.tar.xz
kernel-qcow2-linux-1208fd569c07ab84aa5d024abd863267c2953b4a.zip
SUNRPC: fix xprt leak on xps allocation failure
Callers of rpc_create_xprt expect it to put the xprt on success and failure. Cc: stable@vger.kernel.org Signed-off-by: J. Bruce Fields <bfields@redhat.com> Acked-by: Trond Myklebust <trondmy@primarydata.com>
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r--net/sunrpc/clnt.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 06b4df9faaa1..173c5dd2d751 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -453,9 +453,10 @@ struct rpc_clnt *rpc_create_xprt(struct rpc_create_args *args,
struct rpc_xprt_switch *xps;
xps = xprt_switch_alloc(xprt, GFP_KERNEL);
- if (xps == NULL)
+ if (xps == NULL) {
+ xprt_put(xprt);
return ERR_PTR(-ENOMEM);
-
+ }
clnt = rpc_new_client(args, xps, xprt, NULL);
if (IS_ERR(clnt))
return clnt;