--- linux-2.6.14-old/net/ipv4/tcp.c 2006-11-29 16:24:56.000000000 -0600 +++ linux-2.6.14/net/ipv4/tcp.c 2006-11-29 11:25:57.000000000 -0600 @@ -1109,6 +1109,8 @@ int target; /* Read at least this many bytes */ long timeo; struct task_struct *user_recv = NULL; + + current->backlog_flag = 1; lock_sock(sk); @@ -1394,6 +1396,13 @@ TCP_CHECK_TIMER(sk); release_sock(sk); + + current->backlog_flag = 0; + if(current->extrarun_flag == 1){ + current->extrarun_flag = 0; + yield(); + } + return copied; out: