--- linux-2.6.19-rc2/include/net/request_sock.h 2006-10-13 18:25:04.000000000 +0200 +++ linux-2.6.19-rc2-ed/include/net/request_sock.h 2006-10-16 19:34:19.000000000 +0200 @@ -254,9 +254,13 @@ req->sk = NULL; req->dl_next = lopt->syn_table[hash]; - write_lock(&queue->syn_wait_lock); + /* + * We want previous writes being commited before doing this change, + * so that readers of the chain are not confused. + */ + smp_mb(); + lopt->syn_table[hash] = req; - write_unlock(&queue->syn_wait_lock); } #endif /* _REQUEST_SOCK_H */