diff options
| author | Ingo Molnar <mingo@kernel.org> | 2025-03-08 00:54:06 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2025-03-08 00:54:06 +0100 | 
| commit | f23ecef20af6fbd489e0362d33cdf8d9429fa901 (patch) | |
| tree | 713f06d8335b7c3388bbfbc46cb6d2a568951252 /net/mptcp/subflow.c | |
| parent | c929d08df8bee855528b9d15b853c892c54e1eee (diff) | |
| parent | 85b2b9c16d053364e2004883140538e73b333cdb (diff) | |
Merge branch 'locking/urgent' into locking/core, to pick up locking fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/mptcp/subflow.c')
| -rw-r--r-- | net/mptcp/subflow.c | 20 | 
1 files changed, 2 insertions, 18 deletions
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index fd021cf8286e..9f18217dddc8 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1142,7 +1142,6 @@ static enum mapping_status get_mapping_status(struct sock *ssk,  	if (data_len == 0) {  		pr_debug("infinite mapping received\n");  		MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPRX); -		subflow->map_data_len = 0;  		return MAPPING_INVALID;  	} @@ -1286,18 +1285,6 @@ static void subflow_sched_work_if_closed(struct mptcp_sock *msk, struct sock *ss  		mptcp_schedule_work(sk);  } -static bool subflow_can_fallback(struct mptcp_subflow_context *subflow) -{ -	struct mptcp_sock *msk = mptcp_sk(subflow->conn); - -	if (subflow->mp_join) -		return false; -	else if (READ_ONCE(msk->csum_enabled)) -		return !subflow->valid_csum_seen; -	else -		return READ_ONCE(msk->allow_infinite_fallback); -} -  static void mptcp_subflow_fail(struct mptcp_sock *msk, struct sock *ssk)  {  	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); @@ -1393,7 +1380,7 @@ fallback:  			return true;  		} -		if (!subflow_can_fallback(subflow) && subflow->map_data_len) { +		if (!READ_ONCE(msk->allow_infinite_fallback)) {  			/* fatal protocol error, close the socket.  			 * subflow_error_report() will introduce the appropriate barriers  			 */ @@ -1772,10 +1759,7 @@ int mptcp_subflow_create_socket(struct sock *sk, unsigned short family,  	 * needs it.  	 * Update ns_tracker to current stack trace and refcounted tracker.  	 */ -	__netns_tracker_free(net, &sf->sk->ns_tracker, false); -	sf->sk->sk_net_refcnt = 1; -	get_net_track(net, &sf->sk->ns_tracker, GFP_KERNEL); -	sock_inuse_add(net, 1); +	sk_net_refcnt_upgrade(sf->sk);  	err = tcp_set_ulp(sf->sk, "mptcp");  	if (err)  		goto err_free;  | 
