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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.WNT.2.00.1001191306450.5776@jbrandeb-desk1.amr.corp.intel.com>
Date:	Tue, 19 Jan 2010 13:11:00 -0800 (Pacific Standard Time)
From:	"Brandeburg, Jesse" <jesse.brandeburg@...el.com>
To:	Sridhar Samudrala <sri@...ibm.com>
cc:	Herbert Xu <herbert@...dor.apana.org.au>,
	"Kirsher, Jeffrey T" <jeffrey.t.kirsher@...el.com>,
	netdev <netdev@...r.kernel.org>
Subject: Re: [PATCH net-next-2.6] IFix IPv6 GSO type checks in Intel ethernet
 drivers



On Tue, 19 Jan 2010, Sridhar Samudrala wrote:

> Found this problem when testing IPv6 from a KVM guest to a remote
> host via e1000e device on the host.
> The following patch fixes the check for IPv6 GSO packet in Intel
> ethernet drivers to use skb_is_gso_v6(). SKB_GSO_DODGY is also set
> when packets are forwarded from a guest.
> 
> Signed-off-by: Sridhar Samudrala <sri@...ibm.com

Looks fine, thanks!  The current code in net-next and 2.6.32 both have 
exactly the same condition in skb_is_gso_v6, so I'm not sure that this 
patch alone will fix any issues, FYI.  If this patch is part of another 
set or dependent upon another for the actual change in behavior mentioned 
in the comment, I think it should be noted or sent in a series.

Ack-ed by: Jesse Brandeburg <jesse.brandeburg@...el.com>

> 
> diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
> index 3d57ca5..2353e95 100644
> --- a/drivers/net/e1000e/netdev.c
> +++ b/drivers/net/e1000e/netdev.c
> @@ -3771,7 +3771,7 @@ static int e1000_tso(struct e1000_adapter *adapter,
>  		                                         0, IPPROTO_TCP, 0);
>  		cmd_length = E1000_TXD_CMD_IP;
>  		ipcse = skb_transport_offset(skb) - 1;
> -	} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
> +	} else if (skb_is_gso_v6(skb)) {
>  		ipv6_hdr(skb)->payload_len = 0;
>  		tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
>  		                                       &ipv6_hdr(skb)->daddr,
> diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
> index d967949..d4bbdf0 100644
> --- a/drivers/net/igb/igb_main.c
> +++ b/drivers/net/igb/igb_main.c
> @@ -3422,7 +3422,7 @@ static inline int igb_tso_adv(struct igb_ring *tx_ring,
>  							 iph->daddr, 0,
>  							 IPPROTO_TCP,
>  							 0);
> -	} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
> +	} else if (skb_is_gso_v6(skb)) {
>  		ipv6_hdr(skb)->payload_len = 0;
>  		tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
>  						       &ipv6_hdr(skb)->daddr,
> diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c
> index a6c3920..ce33671 100644
> --- a/drivers/net/igbvf/netdev.c
> +++ b/drivers/net/igbvf/netdev.c
> @@ -1963,7 +1963,7 @@ static int igbvf_tso(struct igbvf_adapter *adapter,
>  		                                         iph->daddr, 0,
>  		                                         IPPROTO_TCP,
>  		                                         0);
> -	} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
> +	} else if (skb_is_gso_v6(skb)) {
>  		ipv6_hdr(skb)->payload_len = 0;
>  		tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
>  		                                       &ipv6_hdr(skb)->daddr,
> diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
> index 81971ed..b2c0025 100644
> --- a/drivers/net/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ixgbe/ixgbe_main.c
> @@ -5113,7 +5113,7 @@ static int ixgbe_tso(struct ixgbe_adapter *adapter,
>  			                                         iph->daddr, 0,
>  			                                         IPPROTO_TCP,
>  			                                         0);
> -		} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
> +		} else if (skb_is_gso_v6(skb)) {
>  			ipv6_hdr(skb)->payload_len = 0;
>  			tcp_hdr(skb)->check =
>  			    ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
> diff --git a/drivers/net/ixgbevf/ixgbevf_main.c b/drivers/net/ixgbevf/ixgbevf_main.c
> index 39544af..652b6f4 100644
> --- a/drivers/net/ixgbevf/ixgbevf_main.c
> +++ b/drivers/net/ixgbevf/ixgbevf_main.c
> @@ -2756,7 +2756,7 @@ static int ixgbevf_tso(struct ixgbevf_adapter *adapter,
>  								 IPPROTO_TCP,
>  								 0);
>  			adapter->hw_tso_ctxt++;
> -		} else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) {
> +		} else if (skb_is_gso_v6(skb)) {
>  			ipv6_hdr(skb)->payload_len = 0;
>  			tcp_hdr(skb)->check =
>  			    ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
> 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ