Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 581e7226 authored by Tom Herbert's avatar Tom Herbert Committed by David S. Miller
Browse files

kcm: Only allow TCP sockets to be attached to a KCM mux



TCP sockets for IPv4 and IPv6 that are not listeners or in closed
stated are allowed to be attached to a KCM mux.

Fixes: ab7ac4eb ("kcm: Kernel Connection Multiplexor module")
Reported-by: default avatar <syzbot+8865eaff7f9acd593945@syzkaller.appspotmail.com>
Signed-off-by: default avatarTom Herbert <tom@quantonium.net>
Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d3303a65
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1387,8 +1387,13 @@ static int kcm_attach(struct socket *sock, struct socket *csock,
	if (!csk)
		return -EINVAL;

	/* We must prevent loops or risk deadlock ! */
	if (csk->sk_family == PF_KCM)
	/* Only allow TCP sockets to be attached for now */
	if ((csk->sk_family != AF_INET && csk->sk_family != AF_INET6) ||
	    csk->sk_protocol != IPPROTO_TCP)
		return -EOPNOTSUPP;

	/* Don't allow listeners or closed sockets */
	if (csk->sk_state == TCP_LISTEN || csk->sk_state == TCP_CLOSE)
		return -EOPNOTSUPP;

	psock = kmem_cache_zalloc(kcm_psockp, GFP_KERNEL);