2.2.13 TCP bug (possible)

From: Rajeev Bector (rajeev@akamai.com)
Date: Mon Jun 26 2000 - 20:46:27 EST


Looks like there is a race condition caused by the
queuing up of backlog packets and then later processing
by __release_sock(). I am describing the case in which
it shows up:
    If a client sends a SYN, Receives a SYN-ACK back
and then sends two packets (an ACK packets and a data
packet back to back). When the server receives the
packets (both packets are received while the listening
socket is locked - by the base context). So both packets
resolve to the listening socket and are queued up.
Later, when __release_sock() is called and first packet
is processed, the connection moves to ESTABLISHED
state but when we process the data packet, we *DO NOT*
resolve (do a tcp_v4_lookup) again and as a result
end up sending a RST back to the client.

Can someone tell me if its a known bug and if there is a
patch ? I made some changes to fix this and am in
the process of testing them (basically we should, in some
cases do a lookup again when we process __release_sock).

Does anyone have any comments or am I missing something
completely in this one ?

Thanks
Rajeev

-
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 : Mon Jun 26 2000 - 21:00:10 EST