mptcp: dispose initial struct socket when its subflow is closed
authorFlorian Westphal <fw@strlen.de>
Thu, 4 Mar 2021 21:32:11 +0000 (13:32 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 Mar 2021 22:30:13 +0000 (14:30 -0800)
commit17aee05dc8822e354f5ad2d68ee39e3ba4b6acf2
tree10b8a937d5859c77ac3e24fb19b5498b2227422b
parenteaeef1ce55ec9161e0c44ff27017777b1644b421
mptcp: dispose initial struct socket when its subflow is closed

Christoph Paasch reported following crash:
dst_release underflow
WARNING: CPU: 0 PID: 1319 at net/core/dst.c:175 dst_release+0xc1/0xd0 net/core/dst.c:175
CPU: 0 PID: 1319 Comm: syz-executor217 Not tainted 5.11.0-rc6af8e85128b4d0d24083c5cac646e891227052e0c #70
Call Trace:
 rt_cache_route+0x12e/0x140 net/ipv4/route.c:1503
 rt_set_nexthop.constprop.0+0x1fc/0x590 net/ipv4/route.c:1612
 __mkroute_output net/ipv4/route.c:2484 [inline]
...

The worker leaves msk->subflow alone even when it
happened to close the subflow ssk associated with it.

Fixes: 866f26f2a9c33b ("mptcp: always graft subflow socket to parent")
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/157
Reported-by: Christoph Paasch <cpaasch@apple.com>
Suggested-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
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>
net/mptcp/protocol.c