OSDN Git Service

mptcp: fix DATA_FIN generation on early shutdown
authorPaolo Abeni <pabeni@redhat.com>
Fri, 19 Feb 2021 17:35:38 +0000 (18:35 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 23 Feb 2021 02:54:59 +0000 (18:54 -0800)
commitd87903b63e3ce1eafaa701aec5cc1d0ecd0d84dc
treee5741937bb90702865731a4ed45be7fc08e8b859
parent341c65242fe18aac8900e4291d472df9f7ba7bc7
mptcp: fix DATA_FIN generation on early shutdown

If the msk is closed before sending or receiving any data,
no DATA_FIN is generated, instead an MPC ack packet is
crafted out.

In the above scenario, the MPTCP protocol creates and sends a
pure ack and such packets matches also the criteria for an
MPC ack and the protocol tries first to insert MPC options,
leading to the described error.

This change addresses the issue by avoiding the insertion of an
MPC option for DATA_FIN packets or if the sub-flow is not
established.

To avoid doing multiple times the same test, fetch the data_fin
flag in a bool variable and pass it to both the interested
helpers.

Fixes: 6d0060f600ad ("mptcp: Write MPTCP DSS headers to outgoing data packets")
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/options.c