mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 05:55:44 +02:00
mptcp: do not warn on bad input from the network
[ Upstream commit61e710227e] warn_bad_map() produces a kernel WARN on bad input coming from the network. Use pr_debug() to avoid spamming the system log. Additionally, when the right bound check fails, warn_bad_map() reports the wrong ssn value, let's fix it. Fixes:648ef4b886("mptcp: Implement MPTCP receive path") Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/107 Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
222ebeda17
commit
eab06f7504
|
|
@ -655,9 +655,9 @@ static u64 expand_seq(u64 old_seq, u16 old_data_len, u64 seq)
|
||||||
return seq | ((old_seq + old_data_len + 1) & GENMASK_ULL(63, 32));
|
return seq | ((old_seq + old_data_len + 1) & GENMASK_ULL(63, 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void warn_bad_map(struct mptcp_subflow_context *subflow, u32 ssn)
|
static void dbg_bad_map(struct mptcp_subflow_context *subflow, u32 ssn)
|
||||||
{
|
{
|
||||||
WARN_ONCE(1, "Bad mapping: ssn=%d map_seq=%d map_data_len=%d",
|
pr_debug("Bad mapping: ssn=%d map_seq=%d map_data_len=%d",
|
||||||
ssn, subflow->map_subflow_seq, subflow->map_data_len);
|
ssn, subflow->map_subflow_seq, subflow->map_data_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -683,13 +683,13 @@ static bool validate_mapping(struct sock *ssk, struct sk_buff *skb)
|
||||||
/* Mapping covers data later in the subflow stream,
|
/* Mapping covers data later in the subflow stream,
|
||||||
* currently unsupported.
|
* currently unsupported.
|
||||||
*/
|
*/
|
||||||
warn_bad_map(subflow, ssn);
|
dbg_bad_map(subflow, ssn);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (unlikely(!before(ssn, subflow->map_subflow_seq +
|
if (unlikely(!before(ssn, subflow->map_subflow_seq +
|
||||||
subflow->map_data_len))) {
|
subflow->map_data_len))) {
|
||||||
/* Mapping does covers past subflow data, invalid */
|
/* Mapping does covers past subflow data, invalid */
|
||||||
warn_bad_map(subflow, ssn + skb->len);
|
dbg_bad_map(subflow, ssn);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user