From: Eric Dumazet <[email protected]>
Date: Thu, 18 Oct 2018 09:12:19 -0700
> Andrey reported the following warning triggered while running CRIU tests:
>
> tcp_clean_rtx_queue()
> ...
> last_ackt = tcp_skb_timestamp_us(skb);
> WARN_ON_ONCE(last_ackt == 0);
>
> This is caused by 5f6188a8003d ("tcp: do not change tcp_wstamp_ns
> in tcp_mstamp_refresh"), as we end up having skbs in retransmit queue
> with a zero skb->skb_mstamp_ns field.
>
> We could fix this bug in different ways, like making sure
> tp->tcp_wstamp_ns is not zero at socket creation, but as Neal pointed
> out, we also do not want that pacing status of a repaired socket
> could push tp->tcp_wstamp_ns far ahead in the future.
>
> So we prefer changing tcp_write_xmit() to not call tcp_update_skb_after_send()
> and instead do what is requested by TCP_REPAIR logic.
>
> Fixes: 5f6188a8003d ("tcp: do not change tcp_wstamp_ns in tcp_mstamp_refresh")
> Signed-off-by: Eric Dumazet <[email protected]>
> Reported-by: Andrey Vagin <[email protected]>
> Acked-by: Soheil Hassas Yeganeh <[email protected]>
> Acked-by: Neal Cardwell <[email protected]>
Applied, thanks Eric.