mptcp: move drop_other_suboptions check under pm lock
authorYonglong Li <liyonglong@chinatelecom.cn>
Tue, 24 Aug 2021 01:05:39 +0000 (18:05 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Aug 2021 08:28:28 +0000 (09:28 +0100)
commit1f5e9e2f5fd55fbf9b58ae6fefb021ad1c91b66a
treeba761406b1c65b7c523664f5512baa40f364b585
parentfaf482ca196a5b16007190529b3b2dd32ab3f761
mptcp: move drop_other_suboptions check under pm lock

This patch moved the drop_other_suboptions check from
mptcp_established_options_add_addr() into mptcp_pm_add_addr_signal(), do
it under the PM lock to avoid the race between this check and
mptcp_pm_add_addr_signal().

For this, added a new parameter for mptcp_pm_add_addr_signal() to get
the drop_other_suboptions value. And drop the other suboptions after the
option length check if drop_other_suboptions is true.

Additionally, always drop the other suboption for TCP pure ack:
that makes both the code simpler and the MPTCP behaviour more
consistent.

Co-developed-by: Geliang Tang <geliangtang@gmail.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Co-developed-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Yonglong Li <liyonglong@chinatelecom.cn>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/options.c
net/mptcp/pm.c
net/mptcp/protocol.h