[PATCH] [xenial] [PATCH] (upstream) net/mlx4_en: Fix endianness bug in IPV6 csum calculation

Christopher Arges chris.j.arges at canonical.com
Mon May 9 15:27:31 UTC 2016


On Mon, May 09, 2016 at 11:09:18AM +0300, Talat Batheesh wrote:
> From: Daniel Jurgens <danielj at mellanox.com>
> 
> BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1544978
> 
> Use htons instead of unconditionally byte swapping nexthdr.  On a little
> endian systems shifting the byte is correct behavior, but it results in
> incorrect csums on big endian architectures.
> 
> Fixes: f8c6455bb04b ('net/mlx4_en: Extend checksum offloading by CHECKSUM COMPLETE')
> Signed-off-by: Daniel Jurgens <danielj at mellanox.com>
> Reviewed-by: Carol Soto <clsoto at us.ibm.com>
> Tested-by: Carol Soto <clsoto at us.ibm.com>
> Signed-off-by: Tariq Toukan <tariqt at mellanox.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit 82d69203df634b4dfa765c94f60ce9482bcc44d6)

Amend this to include where it was cherry-picked from.
Other than that ACK.
--chris

> Signed-off-by: Talat Batheesh <talatb at mellanox.com>
> ---
>  drivers/net/ethernet/mellanox/mlx4/en_rx.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
> index e7a5000..bbff8ec 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
> @@ -704,7 +704,7 @@ static int get_fixed_ipv6_csum(__wsum hw_checksum, struct sk_buff *skb,
>  
>  	if (ipv6h->nexthdr == IPPROTO_FRAGMENT || ipv6h->nexthdr == IPPROTO_HOPOPTS)
>  		return -1;
> -	hw_checksum = csum_add(hw_checksum, (__force __wsum)(ipv6h->nexthdr << 8));
> +	hw_checksum = csum_add(hw_checksum, (__force __wsum)htons(ipv6h->nexthdr));
>  
>  	csum_pseudo_hdr = csum_partial(&ipv6h->saddr,
>  				       sizeof(ipv6h->saddr) + sizeof(ipv6h->daddr), 0);
> -- 
> 2.5.0
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team




More information about the kernel-team mailing list