]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
SUNRPC: Fix a module reference leak in svc_handle_xprt
authorTrond Myklebust <trond.myklebust@primarydata.com>
Sun, 18 May 2014 18:05:22 +0000 (14:05 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 22 May 2014 19:57:22 +0000 (15:57 -0400)
If the accept() call fails, we need to put the module reference.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Cc: stable@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/svc_xprt.c

index 614956f1777e42a95b2f0d605fa4e6eeb2d8fdd2..29772e01b179c36b43062370761f3049833071b8 100644 (file)
@@ -730,6 +730,8 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt)
                newxpt = xprt->xpt_ops->xpo_accept(xprt);
                if (newxpt)
                        svc_add_new_temp_xprt(serv, newxpt);
+               else
+                       module_put(xprt->xpt_class->xcl_owner);
        } else if (xprt->xpt_ops->xpo_has_wspace(xprt)) {
                /* XPT_DATA|XPT_DEFERRED case: */
                dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n",