diff options
Diffstat (limited to 'net/mptcp/pm.c')
| -rw-r--r-- | net/mptcp/pm.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index feb01747d7d8..420d416e2603 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -765,8 +765,14 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fail_seq)  	pr_debug("fail_seq=%llu\n", fail_seq); -	if (!READ_ONCE(msk->allow_infinite_fallback)) +	/* After accepting the fail, we can't create any other subflows */ +	spin_lock_bh(&msk->fallback_lock); +	if (!msk->allow_infinite_fallback) { +		spin_unlock_bh(&msk->fallback_lock);  		return; +	} +	msk->allow_subflows = false; +	spin_unlock_bh(&msk->fallback_lock);  	if (!subflow->fail_tout) {  		pr_debug("send MP_FAIL response and infinite map\n");  | 
