diff options
author | Paolo Abeni <pabeni@redhat.com> | 2021-01-12 18:25:23 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-01-12 20:09:19 -0800 |
commit | 20bc80b6f582ad1151c52ca09ab66b472768c9c8 (patch) | |
tree | 0ba67f80da78e148b9b06d4d9d7bc5075788fc43 /net | |
parent | ece9ab2a78afa1424c1aff45b1a95748dbc1f100 (diff) | |
download | linux-20bc80b6f582ad1151c52ca09ab66b472768c9c8.tar.gz linux-20bc80b6f582ad1151c52ca09ab66b472768c9c8.tar.bz2 linux-20bc80b6f582ad1151c52ca09ab66b472768c9c8.zip |
mptcp: more strict state checking for acks
Syzkaller found a way to trigger division by zero
in mptcp_subflow_cleanup_rbuf().
The current checks implemented into tcp_can_send_ack()
are too week, let's be more accurate.
Reported-by: Christoph Paasch <cpaasch@apple.com>
Fixes: ea4ca586b16f ("mptcp: refine MPTCP-level ack scheduling")
Fixes: fd8976790a6c ("mptcp: be careful on MPTCP-level ack.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/mptcp/protocol.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 6628d8d74203..2ff8c7caf74f 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -427,7 +427,7 @@ static bool mptcp_subflow_active(struct mptcp_subflow_context *subflow) static bool tcp_can_send_ack(const struct sock *ssk) { return !((1 << inet_sk_state_load(ssk)) & - (TCPF_SYN_SENT | TCPF_SYN_RECV | TCPF_TIME_WAIT | TCPF_CLOSE)); + (TCPF_SYN_SENT | TCPF_SYN_RECV | TCPF_TIME_WAIT | TCPF_CLOSE | TCPF_LISTEN)); } static void mptcp_send_ack(struct mptcp_sock *msk) |