Patchwork kernel oops when system under network stress

login
register
mail settings
Submitter Herbert Xu
Date Oct. 16, 2008, 9:10 a.m.
Message ID <20081016091009.GA5794@gondor.apana.org.au>
Download mbox | patch
Permalink /patch/4665/
State RFC
Delegated to: David Miller
Headers show

Comments

Herbert Xu - Oct. 16, 2008, 9:10 a.m.
On Thu, Oct 16, 2008 at 06:09:34PM +1100, Alex Samad wrote:
>
> just about, within a 5-10 min window

Great.  Please apply this patch and let me know what it prints
out (if anything).

Thanks,
Alex Samad - Oct. 24, 2008, 2:09 a.m.
Bugger, didn't see this replay, will get on it 

alex

On Thu, Oct 16, 2008 at 05:10:09PM +0800, Herbert Xu wrote:
> On Thu, Oct 16, 2008 at 06:09:34PM +1100, Alex Samad wrote:
> >
> > just about, within a 5-10 min window
> 
> Great.  Please apply this patch and let me know what it prints
> out (if anything).
> 
> Thanks,
> -- 
> Visit Openswan at http://www.openswan.org/
> Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
> --
> diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
> index 16d43f2..72af09d 100644
> --- a/net/ipv6/inet6_connection_sock.c
> +++ b/net/ipv6/inet6_connection_sock.c
> @@ -233,6 +233,13 @@ int inet6_csk_xmit(struct sk_buff *skb, int ipfragok)
>  	/* Restore final destination back after routing done */
>  	ipv6_addr_copy(&fl.fl6_dst, &np->daddr);
>  
> +	if (WARN_ON(skb_is_gso(skb) && skb->ip_summed != CHECKSUM_PARTIAL)) {
> +		printk("%s: %d %d %d 0x%x 0x%x 0x%lx", skb->dst->dev->name,
> +		       skb->ip_summed, skb_shinfo(skb)->gso_size, skb->len,
> +		       skb_shinfo(skb)->gso_type, sk->sk_route_caps,
> +		       skb->dst->dev->features);
> +	}
> +
>  	return ip6_xmit(sk, skb, &fl, np->opt, 0);
>  }
>  
>

Patch

diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
index 16d43f2..72af09d 100644
--- a/net/ipv6/inet6_connection_sock.c
+++ b/net/ipv6/inet6_connection_sock.c
@@ -233,6 +233,13 @@  int inet6_csk_xmit(struct sk_buff *skb, int ipfragok)
 	/* Restore final destination back after routing done */
 	ipv6_addr_copy(&fl.fl6_dst, &np->daddr);
 
+	if (WARN_ON(skb_is_gso(skb) && skb->ip_summed != CHECKSUM_PARTIAL)) {
+		printk("%s: %d %d %d 0x%x 0x%x 0x%lx", skb->dst->dev->name,
+		       skb->ip_summed, skb_shinfo(skb)->gso_size, skb->len,
+		       skb_shinfo(skb)->gso_type, sk->sk_route_caps,
+		       skb->dst->dev->features);
+	}
+
 	return ip6_xmit(sk, skb, &fl, np->opt, 0);
 }