diff --git a/net/socket.c b/net/socket.c
index bf943e6d47fe8372c89de1200c205f89dcc69eda..553045441a2cddddf612e0bc57a9c31d0b7d13de 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -1630,7 +1630,7 @@ int __sys_listen(int fd, int backlog)
 
 	sock = sockfd_lookup_light(fd, &err, &fput_needed);
 	if (sock) {
-		somaxconn = sock_net(sock->sk)->core.sysctl_somaxconn;
+		somaxconn = READ_ONCE(sock_net(sock->sk)->core.sysctl_somaxconn);
 		if ((unsigned int)backlog > somaxconn)
 			backlog = somaxconn;