mptcp: cope racing subflow creation in mptcp_rcv_space_adjust
authorPaolo Abeni <pabeni@redhat.com>
Fri, 8 Nov 2024 10:58:17 +0000 (11:58 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 12 Nov 2024 03:06:34 +0000 (19:06 -0800)
commitce7356ae35943cc6494cc692e62d51a734062b7d
treef7408edcd3a86c30f596825043f2bbe52f07f770
parent581302298524e9d77c4c44ff5156a6cd112227ae
mptcp: cope racing subflow creation in mptcp_rcv_space_adjust

Additional active subflows - i.e. created by the in kernel path
manager - are included into the subflow list before starting the
3whs.

A racing recvmsg() spooling data received on an already established
subflow would unconditionally call tcp_cleanup_rbuf() on all the
current subflows, potentially hitting a divide by zero error on
the newly created ones.

Explicitly check that the subflow is in a suitable state before
invoking tcp_cleanup_rbuf().

Fixes: c76c6956566f ("mptcp: call tcp_cleanup_rbuf on subflows")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/02374660836e1b52afc91966b7535c8c5f7bafb0.1731060874.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/protocol.c