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

Commit 70f767ae authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Don't kill IPv4 sockets when killing IPv6 sockets was requested.

c7c3ec49 cherry-picked the
tcp_nuke_addr ioctl, but omitted a check that ensures that a
socket is an IPv6 socket. This makes it so that if we issue a
SIOCKILLADDR on ::, it kills IPv4 sockets as well.

This is because every IPv4 socket has an IPv6 source address
(sk_v6_rcv_saddr) of ::. Thus, when we iterate over an IPv4
socket, and compare the source address of the socket to the
source address in the ioctl, it matches the :: that was passed
in, and we kill the socket.

Change-Id: I736431a898e6ec91536536d352936a210aa10100
parent 7653f2e1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3221,6 +3221,8 @@ restart:
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
			if (family == AF_INET6) {
				struct in6_addr *s6;
				if (!inet->pinet6)
					continue;

				s6 = &sk->sk_v6_rcv_saddr;
				if (ipv6_addr_type(s6) == IPV6_ADDR_MAPPED)