diff options
author | Florian Westphal <fw@strlen.de> | 2021-02-12 15:59:57 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-02-12 16:31:45 -0800 |
commit | b263b0d7d60baecda3c840a0703bb6d511f7ae2d (patch) | |
tree | e5aeb93512e8c1d741835b0852a39e4d609bce30 | |
parent | 40947e13997a1cba4e875893ca6e5d5e61a0689d (diff) |
mptcp: move subflow close loop after sk close check
In case mptcp socket is already dead the entire mptcp socket
will be freed. We can avoid the close check in this case.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/mptcp/protocol.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 267c5521692d..1b8be2bf6b43 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2246,9 +2246,6 @@ static void mptcp_worker(struct work_struct *work) mptcp_check_fastclose(msk); - if (test_and_clear_bit(MPTCP_WORK_CLOSE_SUBFLOW, &msk->flags)) - __mptcp_close_subflow(msk); - if (msk->pm.status) mptcp_pm_nl_work(msk); @@ -2270,6 +2267,9 @@ static void mptcp_worker(struct work_struct *work) goto unlock; } + if (test_and_clear_bit(MPTCP_WORK_CLOSE_SUBFLOW, &msk->flags)) + __mptcp_close_subflow(msk); + if (!test_and_clear_bit(MPTCP_WORK_RTX, &msk->flags)) goto unlock; |