Thread (15 messages) 15 messages, 4 authors, 2021-07-01

Re: [PATCH] tcp: Do not reset the icsk_ca_initialized in tcp_init_transfer.

From: Martin KaFai Lau <hidden>
Date: 2021-06-28 23:42:07
Also in: bpf, linux-kernel-mentees, lkml

On Mon, Jun 28, 2021 at 01:20:19PM -0400, Neal Cardwell wrote:
)

On Mon, Jun 28, 2021 at 1:15 PM Phi Nguyen [off-list ref] wrote:
quoted
On 6/29/2021 12:24 AM, Neal Cardwell wrote:
quoted
Thanks.

Can you also please provide a summary of the event sequence that
triggers the bug? Based on your Reported-by tag, I guess this is based
on the syzbot reproducer:

  https://groups.google.com/g/syzkaller-bugs/c/VbHoSsBz0hk/m/cOxOoTgPCAAJ 

but perhaps you can give a summary of the event sequence that causes
the bug? Is it that the call:

setsockopt$inet_tcp_TCP_CONGESTION(r0, 0x6, 0xd,
&(0x7f0000000000)='cdg\x00', 0x4)

initializes the CC and happens before the connection is established,
and then when the connection is established, the line that sets:
   icsk->icsk_ca_initialized = 0;
is incorrect, causing the CC to be initialized again without first
calling the cleanup code that deallocates the CDG-allocated memory?

thanks,
neal
Hi Neal,

The gdb stack trace that lead to init_transfer_input() is as bellow, the
current sock state is TCP_SYN_RECV.
Thanks. That makes sense as a snapshot of time for
tcp_init_transfer(), but I think what would be more useful would be a
description of the sequence of events, including when the CC was
initialized previous to that point (as noted above, was it that the
setsockopt(TCP_CONGESTION) completed before that point?).
+1.  It needs to first explain when was the very first CC initialized.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help