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

Talat Batheesh talatb at mellanox.com
Tue May 10 10:59:53 UTC 2016


Cherry-picked from net tree.

Yours,
Talat 


-----Original Message-----
From: Christopher Arges [mailto:chris.j.arges at canonical.com] 
Sent: Monday, May 09, 2016 6:28 PM
To: Talat Batheesh <talatb at mellanox.com>
Cc: kernel-team at lists.ubuntu.com; Shani Michaeli <shanim at mellanox.com>
Subject: Re: [PATCH] [xenial] [PATCH] (upstream) net/mlx4_en: Fix endianness bug in IPV6 csum calculation

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