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

From: Neal Cardwell
Date: Mon Jun 28 2021 - 12:24:47 EST


On Mon, Jun 28, 2021 at 12:18 PM Phi Nguyen <phind.uet@xxxxxxxxx> wrote:
>
> On 6/28/2021 10:52 PM, Eric Dumazet wrote:
>
> > Unfortunately this patch might break things.
> >
> > We keep changing this CC switching, with eBPF being mixed in the equation.
> >
> > I would suggest you find a Fixes: tag first, so that we can continue
> > the discussion.
> >
> > Thank you.
>
> Thank for your feedback. I will resubmit it with a Fixes tag.
>
> Regard.

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