Re: 2.2.17pre5 Oops

From: kuznet@ms2.inr.ac.ru
Date: Fri Jun 23 2000 - 12:18:47 EST


Hello!

Ok, let us continue. Seems, we are close to end of the story. 8)

Alexey

diff -ur ../vger-000618/linux/include/net/tcp.h linux/include/net/tcp.h
--- ../vger-000618/linux/include/net/tcp.h Mon Jan 31 22:10:29 2000
+++ linux/include/net/tcp.h Fri Jun 23 21:11:12 2000
@@ -910,6 +914,7 @@
                 /* Should be about 2 rtt's */
                 net_reset_timer(sk, TIME_DONE, min(tp->srtt * 2, TCP_DONE_TIME));
                 sk->prot->unhash(sk);
+ sk->next = (void*)12346;
                 /* fall through */
             }
         default:
diff -ur ../vger-000618/linux/net/ipv4/af_inet.c linux/net/ipv4/af_inet.c
--- ../vger-000618/linux/net/ipv4/af_inet.c Mon Jan 31 22:11:19 2000
+++ linux/net/ipv4/af_inet.c Fri Jun 23 21:11:12 2000
@@ -166,6 +166,7 @@
 
         /* Remove from protocol hash chains. */
         sk->prot->unhash(sk);
+ sk->next = (void*)12347;
 
         if(sk->opt)
                 kfree(sk->opt);
@@ -295,6 +296,10 @@
          */
         old_state = sk->state;
         if (old_state != TCP_LISTEN) {
+ if (sk->pprev) {
+ printk("Khm... %d\n", old_state);
+ return -EFAULT;
+ }
                 sk->state = TCP_LISTEN;
                 sk->ack_backlog = 0;
                 if (sk->num == 0) {
diff -ur ../vger-000618/linux/net/ipv4/tcp_ipv4.c linux/net/ipv4/tcp_ipv4.c
--- ../vger-000618/linux/net/ipv4/tcp_ipv4.c Sun Jun 18 21:24:08 2000
+++ linux/net/ipv4/tcp_ipv4.c Fri Jun 23 21:11:12 2000
@@ -327,6 +327,13 @@
 {
         struct sock **skp;
 
+ if (sk->state == TCP_CLOSE) {
+ printk("The bug is found, guys 8).\n");
+ *(int *)0 = 0;
+ }
+ if (sk->pprev)
+ *(int *)0 = 0;
+
         if(sk->state == TCP_LISTEN)
                 skp = &tcp_listening_hash[tcp_sk_listen_hashfn(sk)];
         else
@@ -355,6 +362,7 @@
                         sk->next->pprev = sk->pprev;
                 *sk->pprev = sk->next;
                 sk->pprev = NULL;
+ sk->next = (void*)12345;
                 tcp_reg_zap(sk);
                 if (sk->prev != NULL)
                         __tcp_put_port(sk);
@@ -1366,6 +1374,8 @@
 
                 memcpy(newsk, sk, sizeof(*newsk));
                 newsk->sklist_next = NULL;
+ newsk->next = NULL;
+ newsk->pprev = NULL;
                 newsk->state = TCP_SYN_RECV;
 
                 /* Clone the TCP header template */

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Jun 23 2000 - 21:00:26 EST