Re: Crash when receiving FIN-ACK in TCP_FIN_WAIT1 state
From: Neal Cardwell <ncardwell@google.com>
Date: 2019-10-20 22:16:24
From: Neal Cardwell <ncardwell@google.com>
Date: 2019-10-20 22:16:24
tcp_write_queue_purgeOn Sun, Oct 20, 2019 at 4:25 PM Subash Abhinov Kasiviswanathan [off-list ref] wrote:
We are seeing a crash in the TCP ACK codepath often in our regression racks with an ARM64 device with 4.19 based kernel. It appears that the tp->highest_ack is invalid when being accessed when a FIN-ACK is received. In all the instances of the crash, the tcp socket is in TCP_FIN_WAIT1 state.
Hmm. Random related thought while searching for a possible cause: I wonder if tcp_write_queue_purge() should clear tp->highest_sack (and possibly tp->sacked_out)? The tcp_write_queue_purge() code is careful to call tcp_clear_all_retrans_hints(tcp_sk(sk)) and I would imagine that similar considerations would imply that we should clear at least tp->highest_sack? neal