lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190529165906.GD31099@hmswarspite.think-freely.org>
Date:   Wed, 29 May 2019 12:59:06 -0400
From:   Neil Horman <nhorman@...driver.com>
To:     Matteo Croce <mcroce@...hat.com>
Cc:     linux-sctp@...r.kernel.org, netdev@...r.kernel.org,
        Vlad Yasevich <vyasevich@...il.com>,
        Marcelo Ricardo Leitner <marcelo.leitner@...il.com>,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next] sctp: deduplicate identical skb_checksum_ops

On Wed, May 29, 2019 at 05:39:41PM +0200, Matteo Croce wrote:
> The same skb_checksum_ops struct is defined twice in two different places,
> leading to code duplication. Declare it as a global variable into a common
> header instead of allocating it on the stack on each function call.
> bloat-o-meter reports a slight code shrink.
> 
> add/remove: 1/1 grow/shrink: 0/10 up/down: 128/-1282 (-1154)
> Function                                     old     new   delta
> sctp_csum_ops                                  -     128    +128
> crc32c_csum_ops                               16       -     -16
> sctp_rcv                                    6616    6583     -33
> sctp_packet_pack                            4542    4504     -38
> nf_conntrack_sctp_packet                    4980    4926     -54
> execute_masked_set_action                   6453    6389     -64
> tcf_csum_sctp                                575     428    -147
> sctp_gso_segment                            1292    1126    -166
> sctp_csum_check                              579     412    -167
> sctp_snat_handler                            957     772    -185
> sctp_dnat_handler                           1321    1132    -189
> l4proto_manip_pkt                           2536    2313    -223
> Total: Before=359297613, After=359296459, chg -0.00%
> 
> Reviewed-by: Xin Long <lucien.xin@...il.com>
> Signed-off-by: Matteo Croce <mcroce@...hat.com>
> ---
>  include/net/sctp/checksum.h | 12 +++++++-----
>  net/sctp/offload.c          |  7 +------
>  2 files changed, 8 insertions(+), 11 deletions(-)
> 
> diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h
> index 314699333bec..5a9bb09f32b6 100644
> --- a/include/net/sctp/checksum.h
> +++ b/include/net/sctp/checksum.h
> @@ -43,19 +43,21 @@ static inline __wsum sctp_csum_combine(__wsum csum, __wsum csum2,
>  						   (__force __u32)csum2, len);
>  }
>  
> +static const struct skb_checksum_ops sctp_csum_ops = {
> +	.update  = sctp_csum_update,
> +	.combine = sctp_csum_combine,
> +};
> +
>  static inline __le32 sctp_compute_cksum(const struct sk_buff *skb,
>  					unsigned int offset)
>  {
>  	struct sctphdr *sh = (struct sctphdr *)(skb->data + offset);
> -	const struct skb_checksum_ops ops = {
> -		.update  = sctp_csum_update,
> -		.combine = sctp_csum_combine,
> -	};
>  	__le32 old = sh->checksum;
>  	__wsum new;
>  
>  	sh->checksum = 0;
> -	new = ~__skb_checksum(skb, offset, skb->len - offset, ~(__wsum)0, &ops);
> +	new = ~__skb_checksum(skb, offset, skb->len - offset, ~(__wsum)0,
> +			      &sctp_csum_ops);
>  	sh->checksum = old;
>  
>  	return cpu_to_le32((__force __u32)new);
> diff --git a/net/sctp/offload.c b/net/sctp/offload.c
> index edfcf16e704c..dac46dfadab5 100644
> --- a/net/sctp/offload.c
> +++ b/net/sctp/offload.c
> @@ -103,11 +103,6 @@ static const struct net_offload sctp6_offload = {
>  	},
>  };
>  
> -static const struct skb_checksum_ops crc32c_csum_ops = {
> -	.update  = sctp_csum_update,
> -	.combine = sctp_csum_combine,
> -};
> -
>  int __init sctp_offload_init(void)
>  {
>  	int ret;
> @@ -120,7 +115,7 @@ int __init sctp_offload_init(void)
>  	if (ret)
>  		goto ipv4;
>  
> -	crc32c_csum_stub = &crc32c_csum_ops;
> +	crc32c_csum_stub = &sctp_csum_ops;
>  	return ret;
>  
>  ipv4:
> -- 
> 2.21.0
> 
> 
Acked-by: Neil Horman <nhorman@...driver.com>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ