net :sunrpc :clnt :Fix xps refcount imbalance on the error path
authorLin Yi <teroincn@163.com>
Mon, 10 Jun 2019 02:16:56 +0000 (10:16 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 21 Jul 2019 07:04:29 +0000 (09:04 +0200)
[ Upstream commit b96226148491505318228ac52624956bd98f9e0c ]

rpc_clnt_add_xprt take a reference to struct rpc_xprt_switch, but forget
to release it before return, may lead to a memory leak.

Signed-off-by: Lin Yi <teroincn@163.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/sunrpc/clnt.c

index 6d118357d9dc99fbfdf3c2583167b8176ccd2611..9259529e0412f0ec9539f1aa3f696fe0b85f7ae3 100644 (file)
@@ -2706,6 +2706,7 @@ int rpc_clnt_add_xprt(struct rpc_clnt *clnt,
        xprt = xprt_iter_xprt(&clnt->cl_xpi);
        if (xps == NULL || xprt == NULL) {
                rcu_read_unlock();
+               xprt_switch_put(xps);
                return -EAGAIN;
        }
        resvport = xprt->resvport;