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

Commit 3759fa9c authored by Herbert Xu's avatar Herbert Xu Committed by David S. Miller
Browse files

[TCP]: Fix zero port problem in IPv6



When we link a socket into the hash table, we need to make sure that we
set the num/port fields so that it shows us with a non-zero port value
in proc/netlink and on the wire.  This code and comment is copied over
from the IPv4 stack as is.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent c33d4568
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ static int __inet6_check_established(struct inet_timewait_death_row *death_row,
				     struct inet_timewait_sock **twp)
{
	struct inet_hashinfo *hinfo = death_row->hashinfo;
	const struct inet_sock *inet = inet_sk(sk);
	struct inet_sock *inet = inet_sk(sk);
	const struct ipv6_pinfo *np = inet6_sk(sk);
	const struct in6_addr *daddr = &np->rcv_saddr;
	const struct in6_addr *saddr = &np->daddr;
@@ -129,6 +129,10 @@ static int __inet6_check_established(struct inet_timewait_death_row *death_row,
	}

unique:
	/* Must record num and sport now. Otherwise we will see
	 * in hash table socket with a funny identity. */
	inet->num = lport;
	inet->sport = htons(lport);
	BUG_TRAP(sk_unhashed(sk));
	__sk_add_node(sk, &head->chain);
	sk->sk_hash = hash;