[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4B1DC202.20607@gmail.com>
Date: Tue, 08 Dec 2009 04:03:30 +0100
From: Eric Dumazet <eric.dumazet@...il.com>
To: Chris Rankin <rankincj@...oo.com>
CC: netdev@...r.kernel.org, Andrew Morton <akpm@...ux-foundation.org>,
bugzilla-daemon@...zilla.kernel.org,
bugme-daemon@...zilla.kernel.org, stable@...nel.org,
Neil Horman <nhorman@...driver.com>
Subject: Re: [Bugme-new] [Bug 14749] New: Kernel locks up after a few minutes
of heavy surfing
Chris Rankin a écrit :
>
> I saw something interesting in 2.6.31.7 about a crash due to fragmentation:
>
> ipv4: additional update of dev_net(dev) to struct *net in ip_fragment.c, NULL ptr OOPS
>
> I'll try applying that patch too, to see if it makes any difference. Along with that other UDP-related thing I noticed:
>
> udp: Fix udp_poll() and ioctl()
>
Its all two years old UDP bugs (I spot another one some hours ago), and very rare.
I run heavy duty servers with lot of UDP trafic and never caught a _single_ error,
I am quite suprised it could happen on your machine on demand.
1) Do you have another NIC adapter to try ? It might be a buggy driver.
(Neil Horman found an error on Intel drivers some hours ago, that can corrupt skbs)
2) Could you add following debugging aid ?
3) Any chance you can do a git bisect ?
Thanks
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 7d12c6a..5a7a456 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -147,10 +147,15 @@ void inet_sock_destruct(struct sock *sk)
return;
}
- WARN_ON(atomic_read(&sk->sk_rmem_alloc));
- WARN_ON(atomic_read(&sk->sk_wmem_alloc));
- WARN_ON(sk->sk_wmem_queued);
- WARN_ON(sk->sk_forward_alloc);
+ WARN((atomic_read(&sk->sk_rmem_alloc) | atomic_read(&sk->sk_wmem_alloc) |
+ sk->sk_wmem_queued | sk->sk_forward_alloc) != 0,
+ "%s socket sk_rmem_alloc=%d sk_wmem_alloc=%d "
+ "sk_wmem_queued=%d sk_forward_alloc=%d\n",
+ sk->sk_prot->name,
+ atomic_read(&sk->sk_rmem_alloc),
+ atomic_read(&sk->sk_wmem_alloc),
+ sk->sk_wmem_queued,
+ sk->sk_forward_alloc);
kfree(inet->opt);
dst_release(sk->sk_dst_cache);
--
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