From: Geliang Tang <geliangtang@gmail.com>
To: mptcp@lists.linux.dev
Cc: Yonglong Li <liyonglong@chinatelecom.cn>
Subject: [MPTCP][PATCH v9 mptcp-next 0/6] mptcp: fix conflicts when using pm.add_signal in ADD_ADDR/echo and RM_ADDR process
Date: Fri, 16 Jul 2021 11:04:32 +0800 [thread overview]
Message-ID: <cover.1626404090.git.geliangtang@gmail.com> (raw)
From: Yonglong Li <liyonglong@chinatelecom.cn>
fix issue: ADD_ADDR and RM_ADDR use pm.add_signal to mark event, so
in some case pm.add_signal will be flush when ADD_ADDR/RM_ADDR in
process.
fix issue: if ADD_ADDR and ADD_ADDR-echo process at the same time,
only one event can write pm.add_signal. so ADD_ADDR will process
after add_timer timeout or ADD_ADDR-echo will not be process.
Patch 1 fix ADD_ADDR and RM_ADDR maybe clear addr_signal each other.
Patch 2 and 3 deal ADD_ADDR and ADD_ADDR-echo with separately to fix
conflicts in using pm.addr_signal porcess.
Patch 4 MPTCP_ADD_ADDR_IPV6 and MPTCP_ADD_ADDR_PORT is not necessary.
v1->v2:
- remove READ_ONCE under the pm spin lock.
v2->v3:
- Patch 2: mptcp_pm_should_add_addr => mptcp_pm_should_add_signal_addr
- Patch 3: avoid read-modify-write of msk->pm.addr_signal and change
mptcp_pm_add_addr_signal to return void.
v3->v4:
- Patch 1: use ~(BIT(MPTCP_ADD_ADDR_SIGNAL) | BIT(MPTCP_ADD_ADDR_ECHO))
instead of BIT(MPTCP_RM_ADDR_SIGNAL)
- Patch 3: simple the code; init flags; fix wrong goto logic code;
v4->v5:
- Patch 3: simple the code of 'mptcp_established_options_add_addr'
v5->v6:
- Patch2: fix fails of 'mptcp_join.sh -t'. In mptcp_pm_add_addr_send_ack
without MPTCP_ADD_ADDR_SIGNAL check so pure ack can not be sent for
ADD_ADDR. That cause ADD_ADDR can not be sent in time.
- Patch3: refactor some code according Geliang's suggestions.
- Patch4: modify commit comment
v6->v7:
- Patch1: use reverse xmas tree order for variables definition
- Patch3: refactor some code according Geliang's suggestions.
- add a Patch4: remove some double-check
v7->v8:
- Patch1,2: exchange patch1 and patch2
- Patch3: refactor some code according Geliang's suggestions.
- remove patch "remove some double check", Geliang think it's unnecessary
v8->v9:
- Keep mptcp_add_addr_len unchanged.
- populate opts->local or opts->remote after the length check, don't
populate both of them.
- add back 'echo' and 'port' arguments of mptcp_pm_add_addr_signal().
- add a new arguments drop_other_suboptions for
mptcp_pm_add_addr_signal(), and do the drop_other_suboptions check in it.
- drop other suboptions in mptcp_established_options_add_addr() after the
length check.
- split the drop_other_suboptions code into a new patch.
- add a new selftest case.
Yonglong Li (6):
mptcp: move drop_other_suboptions check under pm lock
mptcp: make MPTCP_ADD_ADDR_SIGNAL and MPTCP_ADD_ADDR_ECHO separate
mptcp: fix ADD_ADDR and RM_ADDR maybe flush addr_signal each other
mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal
mptcp: remove MPTCP_ADD_ADDR_IPV6 and MPTCP_ADD_ADDR_PORT
selftests: mptcp: add_addr and echo race test
include/net/mptcp.h | 3 +-
net/mptcp/options.c | 54 +++++++++---------
net/mptcp/pm.c | 57 +++++++++++++------
net/mptcp/pm_netlink.c | 10 ++--
net/mptcp/protocol.h | 24 ++++----
.../testing/selftests/net/mptcp/mptcp_join.sh | 15 +++++
6 files changed, 97 insertions(+), 66 deletions(-)
--
2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: Geliang Tang <geliangtang@gmail.com>
To: mptcp@lists.linux.dev, Geliang Tang <geliangtang@gmail.com>
Subject: [MPTCP][PATCH v9 mptcp-next 0/6] mptcp: fix conflicts when using pm.add_signal in ADD_ADDR/echo and RM_ADDR process
Date: Fri, 16 Jul 2021 11:12:28 +0800 [thread overview]
Message-ID: <cover.1626404090.git.geliangtang@gmail.com> (raw)
Message-ID: <20210716031228.l_l3GdgZQCCyAtZCRkvvJUOUv5_Jwhc4-c30rdVLFbo@z> (raw)
From: Yonglong Li <liyonglong@chinatelecom.cn>
fix issue: ADD_ADDR and RM_ADDR use pm.add_signal to mark event, so
in some case pm.add_signal will be flush when ADD_ADDR/RM_ADDR in
process.
fix issue: if ADD_ADDR and ADD_ADDR-echo process at the same time,
only one event can write pm.add_signal. so ADD_ADDR will process
after add_timer timeout or ADD_ADDR-echo will not be process.
Patch 1 fix ADD_ADDR and RM_ADDR maybe clear addr_signal each other.
Patch 2 and 3 deal ADD_ADDR and ADD_ADDR-echo with separately to fix
conflicts in using pm.addr_signal porcess.
Patch 4 MPTCP_ADD_ADDR_IPV6 and MPTCP_ADD_ADDR_PORT is not necessary.
v1->v2:
- remove READ_ONCE under the pm spin lock.
v2->v3:
- Patch 2: mptcp_pm_should_add_addr => mptcp_pm_should_add_signal_addr
- Patch 3: avoid read-modify-write of msk->pm.addr_signal and change
mptcp_pm_add_addr_signal to return void.
v3->v4:
- Patch 1: use ~(BIT(MPTCP_ADD_ADDR_SIGNAL) | BIT(MPTCP_ADD_ADDR_ECHO))
instead of BIT(MPTCP_RM_ADDR_SIGNAL)
- Patch 3: simple the code; init flags; fix wrong goto logic code;
v4->v5:
- Patch 3: simple the code of 'mptcp_established_options_add_addr'
v5->v6:
- Patch2: fix fails of 'mptcp_join.sh -t'. In mptcp_pm_add_addr_send_ack
without MPTCP_ADD_ADDR_SIGNAL check so pure ack can not be sent for
ADD_ADDR. That cause ADD_ADDR can not be sent in time.
- Patch3: refactor some code according Geliang's suggestions.
- Patch4: modify commit comment
v6->v7:
- Patch1: use reverse xmas tree order for variables definition
- Patch3: refactor some code according Geliang's suggestions.
- add a Patch4: remove some double-check
v7->v8:
- Patch1,2: exchange patch1 and patch2
- Patch3: refactor some code according Geliang's suggestions.
- remove patch "remove some double check", Geliang think it's unnecessary
v8->v9:
- Keep mptcp_add_addr_len unchanged.
- populate opts->local or opts->remote after the length check, don't
populate both of them.
- add back 'echo' and 'port' arguments of mptcp_pm_add_addr_signal().
- add a new arguments drop_other_suboptions for
mptcp_pm_add_addr_signal(), and do the drop_other_suboptions check in it.
- drop other suboptions in mptcp_established_options_add_addr() after the
length check.
- split the drop_other_suboptions code into a new patch.
- add a new selftest case.
Yonglong Li (6):
mptcp: move drop_other_suboptions check under pm lock
mptcp: make MPTCP_ADD_ADDR_SIGNAL and MPTCP_ADD_ADDR_ECHO separate
mptcp: fix ADD_ADDR and RM_ADDR maybe flush addr_signal each other
mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal
mptcp: remove MPTCP_ADD_ADDR_IPV6 and MPTCP_ADD_ADDR_PORT
selftests: mptcp: add_addr and echo race test
include/net/mptcp.h | 3 +-
net/mptcp/options.c | 54 +++++++++---------
net/mptcp/pm.c | 57 +++++++++++++------
net/mptcp/pm_netlink.c | 10 ++--
net/mptcp/protocol.h | 24 ++++----
.../testing/selftests/net/mptcp/mptcp_join.sh | 15 +++++
6 files changed, 97 insertions(+), 66 deletions(-)
--
2.31.1
next reply other threads:[~2021-07-16 3:04 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-16 3:04 Geliang Tang [this message]
2021-07-16 3:12 ` [MPTCP][PATCH v9 mptcp-next 0/6] mptcp: fix conflicts when using pm.add_signal in ADD_ADDR/echo and RM_ADDR process Geliang Tang
2021-07-16 3:04 ` [MPTCP][PATCH v9 mptcp-next 1/6] mptcp: move drop_other_suboptions check under pm lock Geliang Tang
2021-07-16 3:04 ` [MPTCP][PATCH v9 mptcp-next 2/6] mptcp: make MPTCP_ADD_ADDR_SIGNAL and MPTCP_ADD_ADDR_ECHO separate Geliang Tang
2021-07-16 3:04 ` [MPTCP][PATCH v9 mptcp-next 3/6] mptcp: fix ADD_ADDR and RM_ADDR maybe flush addr_signal each other Geliang Tang
2021-07-16 3:04 ` [MPTCP][PATCH v9 mptcp-next 4/6] mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal Geliang Tang
2021-07-16 3:04 ` [MPTCP][PATCH v9 mptcp-next 5/6] mptcp: remove MPTCP_ADD_ADDR_IPV6 and MPTCP_ADD_ADDR_PORT Geliang Tang
2021-07-16 3:04 ` [MPTCP][PATCH v9 mptcp-next 6/6] selftests: mptcp: add_addr and echo race test Geliang Tang
2021-07-16 9:35 ` [MPTCP][PATCH v9 mptcp-next 0/6] mptcp: fix conflicts when using pm.add_signal in ADD_ADDR/echo and RM_ADDR process Yonglong Li
2021-07-16 10:13 ` Geliang Tang
2021-07-19 9:57 ` Yonglong Li
2021-07-19 10:02 ` Geliang Tang
2021-07-22 9:21 ` Matthieu Baerts
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1626404090.git.geliangtang@gmail.com \
--to=geliangtang@gmail.com \
--cc=liyonglong@chinatelecom.cn \
--cc=mptcp@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.