diff options
Diffstat (limited to 'net/sunrpc/svc_xprt.c')
| -rw-r--r-- | net/sunrpc/svc_xprt.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index 80a6640f329..b4737fbdec1 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -571,7 +571,7 @@ static void svc_check_conn_limits(struct svc_serv *serv)  	}  } -int svc_alloc_arg(struct svc_rqst *rqstp) +static int svc_alloc_arg(struct svc_rqst *rqstp)  {  	struct svc_serv *serv = rqstp->rq_server;  	struct xdr_buf *arg; @@ -597,6 +597,7 @@ int svc_alloc_arg(struct svc_rqst *rqstp)  			}  			rqstp->rq_pages[i] = p;  		} +	rqstp->rq_page_end = &rqstp->rq_pages[i];  	rqstp->rq_pages[i++] = NULL; /* this might be seen in nfs_read_actor */  	/* Make arg->head point to first page and arg->pages point to rest */ @@ -612,7 +613,7 @@ int svc_alloc_arg(struct svc_rqst *rqstp)  	return 0;  } -struct svc_xprt *svc_get_next_xprt(struct svc_rqst *rqstp, long timeout) +static struct svc_xprt *svc_get_next_xprt(struct svc_rqst *rqstp, long timeout)  {  	struct svc_xprt *xprt;  	struct svc_pool		*pool = rqstp->rq_pool; @@ -691,7 +692,7 @@ struct svc_xprt *svc_get_next_xprt(struct svc_rqst *rqstp, long timeout)  	return xprt;  } -void svc_add_new_temp_xprt(struct svc_serv *serv, struct svc_xprt *newxpt) +static void svc_add_new_temp_xprt(struct svc_serv *serv, struct svc_xprt *newxpt)  {  	spin_lock_bh(&serv->sv_lock);  	set_bit(XPT_TEMP, &newxpt->xpt_flags); @@ -730,6 +731,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", @@ -793,7 +796,7 @@ int svc_recv(struct svc_rqst *rqstp, long timeout)  	clear_bit(XPT_OLD, &xprt->xpt_flags); -	rqstp->rq_secure = svc_port_is_privileged(svc_addr(rqstp)); +	rqstp->rq_secure = xprt->xpt_ops->xpo_secure_port(rqstp);  	rqstp->rq_chandle.defer = svc_defer;  	if (serv->sv_stats)  | 
