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

Commit 4669452b authored by Baptiste Lepers's avatar Baptiste Lepers Committed by Greg Kroah-Hartman
Browse files

udp: Prevent reuseport_select_sock from reading uninitialized socks



[ Upstream commit fd2ddef043592e7de80af53f47fa46fd3573086e ]

reuse->socks[] is modified concurrently by reuseport_add_sock. To
prevent reading values that have not been fully initialized, only read
the array up until the last known safe index instead of incorrectly
re-reading the last index of the array.

Fixes: acdcecc61285f ("udp: correct reuseport selection with connected sockets")
Signed-off-by: default avatarBaptiste Lepers <baptiste.lepers@gmail.com>
Acked-by: default avatarWillem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20210107051110.12247-1-baptiste.lepers@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a08c2e58
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -299,7 +299,7 @@ struct sock *reuseport_select_sock(struct sock *sk,
			i = j = reciprocal_scale(hash, socks);
			while (reuse->socks[i]->sk_state == TCP_ESTABLISHED) {
				i++;
				if (i >= reuse->num_socks)
				if (i >= socks)
					i = 0;
				if (i == j)
					goto out;