Re: 2.0.30 oops, decoded

David S. Miller (davem@jenolan.rutgers.edu)
Mon, 5 May 1997 01:44:14 -0400


Please try this patch:

--- linux/net/ipv4/tcp_output.c.~2~ Sun May 4 23:58:46 1997
+++ linux/net/ipv4/tcp_output.c Mon May 5 01:03:02 1997
@@ -991,11 +991,16 @@
buff->csum = csum_partial(ptr, 4, 0);
#ifdef CONFIG_SYN_COOKIES
/* Don't save buff on the newsk chain if we are going to destroy
- * newsk anway in a second, it just delays getting rid of newsk.
+ * newsk anyway in a second, it just delays getting rid of newsk.
*/
if (destroy) {
+ /* BUFF was charged to NEWSK, _this_ is what we want
+ * to undo so the SYN cookie can be killed now. SKB
+ * is charged to SK, below we will undo that when
+ * we kfree SKB.
+ */
buff->sk = NULL;
- atomic_sub(skb->truesize, &sk->wmem_alloc);
+ atomic_sub(buff->truesize, &newsk->wmem_alloc);
}
#endif
tcp_send_check(t1, newsk->saddr, newsk->daddr, sizeof(*t1)+4, buff);