summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaolo Abeni <pabeni@redhat.com>2020-06-10 10:49:00 +0200
committerDavid S. Miller <davem@davemloft.net>2020-06-10 16:07:00 -0700
commit4b5af44129d0653a4df44e5511c7d480c61c8f3c (patch)
tree3877dcdff57f964dad44d3f2e6f562e4ae758b07
parent5969856ae8ce29c9d523a1a6145cbd9e87f7046c (diff)
downloadlinux-4b5af44129d0653a4df44e5511c7d480c61c8f3c.tar.gz
linux-4b5af44129d0653a4df44e5511c7d480c61c8f3c.tar.xz
mptcp: don't leak msk in token container
If a listening MPTCP socket has unaccepted sockets at close time, the related msks are freed via mptcp_sock_destruct(), which in turn does not invoke the proto->destroy() method nor the mptcp_token_destroy() function. Due to the above, the child msk socket is not removed from the token container, leading to later UaF. Address the issue explicitly removing the token even in the above error path. Fixes: 79c0949e9a09 ("mptcp: Add key generation and token tree") Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/mptcp/subflow.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 493b98a0825c..bf132575040d 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -393,6 +393,7 @@ static void mptcp_sock_destruct(struct sock *sk)
sock_orphan(sk);
}
+ mptcp_token_destroy(mptcp_sk(sk)->token);
inet_sock_destruct(sk);
}