* Re: Fw: kernel BUG at net/core/skbuff.c:1028!
2003-05-08 1:20 ` Fw: kernel BUG at net/core/skbuff.c:1028! Rusty Russell
@ 2003-05-08 8:34 ` Jens Axboe
2003-05-08 17:20 ` David S. Miller
1 sibling, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2003-05-08 8:34 UTC (permalink / raw)
To: Rusty Russell; +Cc: David S. Miller, laforge, linux-kernel, netdev
On Thu, May 08 2003, Rusty Russell wrote:
> In message <20030507.042003.26512841.davem@redhat•com> you write:
> > It has to be from some of the skb linearization changes.
> > I can't think of any other change we've made that would
> > make this start to happen.
>
> Yep, culprit is obvious stupid bug. This indicates a serious lack of
> testing on my part 8(
One would think so, since it doesn't even get to the login :)
> Jens, does this help?
[snip]
Nope, it still dies hard. I didn't log the oops this time (box is
headless and I need to move it to do so), but it hung hard before it was
done booting.
Want me to log a new oops?
--
Jens Axboe
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: kernel BUG at net/core/skbuff.c:1028!
2003-05-08 1:20 ` Fw: kernel BUG at net/core/skbuff.c:1028! Rusty Russell
2003-05-08 8:34 ` Jens Axboe
@ 2003-05-08 17:20 ` David S. Miller
2003-05-09 7:00 ` Jens Axboe
1 sibling, 1 reply; 4+ messages in thread
From: David S. Miller @ 2003-05-08 17:20 UTC (permalink / raw)
To: rusty; +Cc: laforge, axboe, linux-kernel, netdev
From: Rusty Russell <rusty@rustcorp•com.au>
Date: Thu, 08 May 2003 11:20:27 +1000
Yep, culprit is obvious stupid bug. This indicates a serious lack of
testing on my part 8(
Jens, does this help?
There were two cases of the same bug, you fixed only one
instance :-)
Jens, try this patch instead.
--- net/ipv4/netfilter/ip_nat_core.c.~1~ Thu May 8 11:23:22 2003
+++ net/ipv4/netfilter/ip_nat_core.c Thu May 8 11:25:56 2003
@@ -861,6 +861,7 @@
} *inside;
unsigned int i;
struct ip_nat_info *info = &conntrack->nat.info;
+ int hdrlen;
if (!skb_ip_make_writable(pskb,(*pskb)->nh.iph->ihl*4+sizeof(*inside)))
return 0;
@@ -868,10 +869,12 @@
/* We're actually going to mangle it beyond trivial checksum
adjustment, so make sure the current checksum is correct. */
- if ((*pskb)->ip_summed != CHECKSUM_UNNECESSARY
- && (u16)csum_fold(skb_checksum(*pskb, (*pskb)->nh.iph->ihl*4,
- (*pskb)->len, 0)))
- return 0;
+ if ((*pskb)->ip_summed != CHECKSUM_UNNECESSARY) {
+ hdrlen = (*pskb)->nh.iph->ihl * 4;
+ if ((u16)csum_fold(skb_checksum(*pskb, hdrlen,
+ (*pskb)->len - hdrlen, 0)))
+ return 0;
+ }
/* Must be RELATED */
IP_NF_ASSERT((*pskb)->nfct
@@ -948,10 +951,12 @@
}
READ_UNLOCK(&ip_nat_lock);
+ hdrlen = (*pskb)->nh.iph->ihl * 4;
+
inside->icmp.checksum = 0;
- inside->icmp.checksum = csum_fold(skb_checksum(*pskb,
- (*pskb)->nh.iph->ihl*4,
- (*pskb)->len, 0));
+ inside->icmp.checksum = csum_fold(skb_checksum(*pskb, hdrlen,
+ (*pskb)->len - hdrlen,
+ 0));
return 1;
unlock_fail:
^ permalink raw reply [flat|nested] 4+ messages in thread