diff options
author | Paolo Abeni <pabeni@redhat.com> | 2020-04-30 15:01:53 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-04-30 12:23:22 -0700 |
commit | d6085fe19b8ec53d8ea2d8a10390b7ab6978ac44 (patch) | |
tree | 8d86b32993478227f5a62f98d2f232f53afa6314 /net/mptcp | |
parent | cfde141ea3faa30e362bbdb5c28001bbbdb0b8e0 (diff) | |
download | linux-d6085fe19b8ec53d8ea2d8a10390b7ab6978ac44.tar.gz linux-d6085fe19b8ec53d8ea2d8a10390b7ab6978ac44.tar.bz2 linux-d6085fe19b8ec53d8ea2d8a10390b7ab6978ac44.zip |
mptcp: avoid a WARN on bad input.
Syzcaller has found a way to trigger the WARN_ON_ONCE condition
in check_fully_established().
The root cause is a legit fallback to TCP scenario, so replace
the WARN with a plain message on a more strict condition.
Fixes: f296234c98a8 ("mptcp: Add handling of incoming MP_JOIN requests")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mptcp')
-rw-r--r-- | net/mptcp/options.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mptcp/options.c b/net/mptcp/options.c index eadbd59586e4..ecf41d52d2fc 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -703,8 +703,6 @@ static bool check_fully_established(struct mptcp_sock *msk, struct sock *sk, goto fully_established; } - WARN_ON_ONCE(subflow->can_ack); - /* If the first established packet does not contain MP_CAPABLE + data * then fallback to TCP */ @@ -714,6 +712,8 @@ static bool check_fully_established(struct mptcp_sock *msk, struct sock *sk, return false; } + if (unlikely(!READ_ONCE(msk->pm.server_side))) + pr_warn_once("bogus mpc option on established client sk"); subflow->fully_established = 1; subflow->remote_key = mp_opt->sndr_key; subflow->can_ack = 1; |