Skip to content

Commit f071577

Browse files
Florian Westphaldavem330
authored andcommitted
mptcp: put subflow sock on connect error
mptcp_add_pending_subflow() performs a sock_hold() on the subflow, then adds the subflow to the join list. Without a sock_put the subflow sk won't be freed in case connect() fails. unreferenced object 0xffff88810c03b100 (size 3000): [..] sk_prot_alloc.isra.0+0x2f/0x110 sk_alloc+0x5d/0xc20 inet6_create+0x2b7/0xd30 __sock_create+0x17f/0x410 mptcp_subflow_create_socket+0xff/0x9c0 __mptcp_subflow_connect+0x1da/0xaf0 mptcp_pm_nl_work+0x6e0/0x1120 mptcp_worker+0x508/0x9a0 Fixes: 5b950ff ("mptcp: link MPC subflow into msk only after accept") 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>
1 parent e0be493 commit f071577

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

net/mptcp/subflow.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,6 +1297,7 @@ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info *loc,
12971297
spin_lock_bh(&msk->join_list_lock);
12981298
list_del(&subflow->node);
12991299
spin_unlock_bh(&msk->join_list_lock);
1300+
sock_put(mptcp_subflow_tcp_sock(subflow));
13001301

13011302
failed:
13021303
subflow->disposable = 1;

0 commit comments

Comments
 (0)