All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-net 1/2] mptcp: use mptcp_schedule_work instead of open-codying it
@ 2023-03-24 10:34 Paolo Abeni
  2023-03-24 10:34 ` [PATCH mptcp-net 2/2] mptcp: stricter state check in mptcp_worker Paolo Abeni
  0 siblings, 1 reply; 8+ messages in thread
From: Paolo Abeni @ 2023-03-24 10:34 UTC (permalink / raw)
  To: mptcp

Beyond reducing code duplication this also avoiding scheduling
the mptcp_worker on a closed socket on some edge scenarios.

The addressed issue is actually older than the blamed commit
below, but this fix need it as a pre-requisite.

Fixes: ba8f48f7a4d7 ("mptcp: introduce mptcp_schedule_work")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
 net/mptcp/options.c | 5 ++---
 net/mptcp/subflow.c | 9 ++++-----
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 99c4f9e9bb90..cd3b885c8faa 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -1192,9 +1192,8 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
 	 */
 	if (TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb)->end_seq) {
 		if (mp_opt.data_fin && mp_opt.data_len == 1 &&
-		    mptcp_update_rcv_data_fin(msk, mp_opt.data_seq, mp_opt.dsn64) &&
-		    schedule_work(&msk->work))
-			sock_hold(subflow->conn);
+		    mptcp_update_rcv_data_fin(msk, mp_opt.data_seq, mp_opt.dsn64))
+			mptcp_schedule_work((struct sock *)msk);
 
 		return true;
 	}
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index fe02d1222f43..e90c6f6a676a 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -408,9 +408,8 @@ void mptcp_subflow_reset(struct sock *ssk)
 
 	tcp_send_active_reset(ssk, GFP_ATOMIC);
 	tcp_done(ssk);
-	if (!test_and_set_bit(MPTCP_WORK_CLOSE_SUBFLOW, &mptcp_sk(sk)->flags) &&
-	    schedule_work(&mptcp_sk(sk)->work))
-		return; /* worker will put sk for us */
+	if (!test_and_set_bit(MPTCP_WORK_CLOSE_SUBFLOW, &mptcp_sk(sk)->flags))
+		mptcp_schedule_work(sk);
 
 	sock_put(sk);
 }
@@ -1101,8 +1100,8 @@ static enum mapping_status get_mapping_status(struct sock *ssk,
 				skb_ext_del(skb, SKB_EXT_MPTCP);
 				return MAPPING_OK;
 			} else {
-				if (updated && schedule_work(&msk->work))
-					sock_hold((struct sock *)msk);
+				if (updated)
+					mptcp_schedule_work((struct sock *)msk);
 
 				return MAPPING_DATA_FIN;
 			}
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-03-27 18:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-24 10:34 [PATCH mptcp-net 1/2] mptcp: use mptcp_schedule_work instead of open-codying it Paolo Abeni
2023-03-24 10:34 ` [PATCH mptcp-net 2/2] mptcp: stricter state check in mptcp_worker Paolo Abeni
2023-03-24 12:34   ` mptcp: stricter state check in mptcp_worker: Build Failure MPTCP CI
2023-03-24 12:36   ` MPTCP CI
2023-03-24 14:25   ` mptcp: stricter state check in mptcp_worker: Tests Results MPTCP CI
2023-03-24 15:12   ` MPTCP CI
2023-03-27 15:33   ` [PATCH mptcp-net 2/2] mptcp: stricter state check in mptcp_worker Matthieu Baerts
2023-03-27 17:17   ` Christoph Paasch

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.