Re: [PATCH v1 2/2] SUNRPC: Remove ->xpo_secure_port()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2023-01-24 at 15:40 -0500, Chuck Lever wrote:
> From: Chuck Lever <chuck.lever@xxxxxxxxxx>
> 
> There's no need for the cost of this extra virtual function call
> during every RPC transaction: the RQ_SECURE bit can be set properly
> in ->xpo_recvfrom() instead.
> 
> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
> ---
>  include/linux/sunrpc/svc_xprt.h          |    1 -
>  net/sunrpc/svc_xprt.c                    |    1 -
>  net/sunrpc/svcsock.c                     |    4 ++--
>  net/sunrpc/xprtrdma/svc_rdma_recvfrom.c  |    1 +
>  net/sunrpc/xprtrdma/svc_rdma_transport.c |    7 -------
>  5 files changed, 3 insertions(+), 11 deletions(-)
> 
> diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h
> index d42a75b3be10..775368802762 100644
> --- a/include/linux/sunrpc/svc_xprt.h
> +++ b/include/linux/sunrpc/svc_xprt.h
> @@ -26,7 +26,6 @@ struct svc_xprt_ops {
>  	void		(*xpo_release_rqst)(struct svc_rqst *);
>  	void		(*xpo_detach)(struct svc_xprt *);
>  	void		(*xpo_free)(struct svc_xprt *);
> -	void		(*xpo_secure_port)(struct svc_rqst *rqstp);
>  	void		(*xpo_kill_temp_xprt)(struct svc_xprt *);
>  	void		(*xpo_start_tls)(struct svc_xprt *);
>  };
> diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
> index c2ce12538008..573a494f11d7 100644
> --- a/net/sunrpc/svc_xprt.c
> +++ b/net/sunrpc/svc_xprt.c
> @@ -888,7 +888,6 @@ int svc_recv(struct svc_rqst *rqstp, long timeout)
>  
>  	clear_bit(XPT_OLD, &xprt->xpt_flags);
>  
> -	xprt->xpt_ops->xpo_secure_port(rqstp);
>  	rqstp->rq_chandle.defer = svc_defer;
>  	rqstp->rq_xid = svc_getu32(&rqstp->rq_arg.head[0]);
>  
> diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
> index 815baf308236..81bdcb6f73bb 100644
> --- a/net/sunrpc/svcsock.c
> +++ b/net/sunrpc/svcsock.c
> @@ -508,6 +508,7 @@ static int svc_udp_recvfrom(struct svc_rqst *rqstp)
>  	if (serv->sv_stats)
>  		serv->sv_stats->netudpcnt++;
>  
> +	svc_sock_secure_port(rqstp);
>  	svc_xprt_received(rqstp->rq_xprt);
>  	return len;
>  
> @@ -636,7 +637,6 @@ static const struct svc_xprt_ops svc_udp_ops = {
>  	.xpo_free = svc_sock_free,
>  	.xpo_has_wspace = svc_udp_has_wspace,
>  	.xpo_accept = svc_udp_accept,
> -	.xpo_secure_port = svc_sock_secure_port,
>  	.xpo_kill_temp_xprt = svc_udp_kill_temp_xprt,
>  };
>  
> @@ -1028,6 +1028,7 @@ static int svc_tcp_recvfrom(struct svc_rqst *rqstp)
>  	if (serv->sv_stats)
>  		serv->sv_stats->nettcpcnt++;
>  
> +	svc_sock_secure_port(rqstp);
>  	svc_xprt_received(rqstp->rq_xprt);
>  	return rqstp->rq_arg.len;
>  
> @@ -1209,7 +1210,6 @@ static const struct svc_xprt_ops svc_tcp_ops = {
>  	.xpo_free = svc_sock_free,
>  	.xpo_has_wspace = svc_tcp_has_wspace,
>  	.xpo_accept = svc_tcp_accept,
> -	.xpo_secure_port = svc_sock_secure_port,
>  	.xpo_kill_temp_xprt = svc_tcp_kill_temp_xprt,
>  };
>  
> diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
> index 5242ad121450..1c658fa43063 100644
> --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
> +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
> @@ -847,6 +847,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
>  	rqstp->rq_xprt_ctxt = ctxt;
>  	rqstp->rq_prot = IPPROTO_MAX;
>  	svc_xprt_copy_addrs(rqstp, xprt);
> +	set_bit(RQ_SECURE, &rqstp->rq_flags);
>  	return rqstp->rq_arg.len;
>  
>  out_err:
> diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> index 94b20fb47135..416b298f74dd 100644
> --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
> +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> @@ -73,7 +73,6 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt);
>  static void svc_rdma_detach(struct svc_xprt *xprt);
>  static void svc_rdma_free(struct svc_xprt *xprt);
>  static int svc_rdma_has_wspace(struct svc_xprt *xprt);
> -static void svc_rdma_secure_port(struct svc_rqst *);
>  static void svc_rdma_kill_temp_xprt(struct svc_xprt *);
>  
>  static const struct svc_xprt_ops svc_rdma_ops = {
> @@ -86,7 +85,6 @@ static const struct svc_xprt_ops svc_rdma_ops = {
>  	.xpo_free = svc_rdma_free,
>  	.xpo_has_wspace = svc_rdma_has_wspace,
>  	.xpo_accept = svc_rdma_accept,
> -	.xpo_secure_port = svc_rdma_secure_port,
>  	.xpo_kill_temp_xprt = svc_rdma_kill_temp_xprt,
>  };
>  
> @@ -600,11 +598,6 @@ static int svc_rdma_has_wspace(struct svc_xprt *xprt)
>  	return 1;
>  }
>  
> -static void svc_rdma_secure_port(struct svc_rqst *rqstp)
> -{
> -	set_bit(RQ_SECURE, &rqstp->rq_flags);
> -}
> -
>  static void svc_rdma_kill_temp_xprt(struct svc_xprt *xprt)
>  {
>  }
> 
> 

Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx>




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux