mptcp: be careful on MPTCP-level ack.
authorPaolo Abeni <pabeni@redhat.com>
Tue, 24 Nov 2020 21:51:24 +0000 (22:51 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 25 Nov 2020 21:36:16 +0000 (13:36 -0800)
commitfd8976790a6c1fee98bd7bc73754ddc9f01273ab
tree8f2c56dcaedd3bbb5f430ec6ed290032f19f6e78
parentbfd042321a7afa769c855c37f2bbe2703dc72ef2
mptcp: be careful on MPTCP-level ack.

We can enter the main mptcp_recvmsg() loop even when
no subflows are connected. As note by Eric, that would
result in a divide by zero oops on ack generation.

Address the issue by checking the subflow status before
sending the ack.

Additionally protect mptcp_recvmsg() against invocation
with weird socket states.

v1 -> v2:
 - removed unneeded inline keyword - Jakub

Reported-and-suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
Fixes: ea4ca586b16f ("mptcp: refine MPTCP-level ack scheduling")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Link: https://lore.kernel.org/r/5370c0ae03449239e3d1674ddcfb090cf6f20abe.1606253206.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/protocol.c