SUNRPC: Fix a module reference leak in svc_handle_xprt
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>
This commit is contained in:
parent
16e4d93f6d
commit
c789102c20
|
@ -730,6 +730,8 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt)
|
||||||
newxpt = xprt->xpt_ops->xpo_accept(xprt);
|
newxpt = xprt->xpt_ops->xpo_accept(xprt);
|
||||||
if (newxpt)
|
if (newxpt)
|
||||||
svc_add_new_temp_xprt(serv, 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)) {
|
} else if (xprt->xpt_ops->xpo_has_wspace(xprt)) {
|
||||||
/* XPT_DATA|XPT_DEFERRED case: */
|
/* XPT_DATA|XPT_DEFERRED case: */
|
||||||
dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n",
|
dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n",
|
||||||
|
|
Loading…
Reference in New Issue