diff --git a/net/core/sock.c b/net/core/sock.c
index 04306ccdf908197974af08d56b09ec3ca73a197c..1a2ec2c4cfe2646f560b5223d710a7bf0586c2a3 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1628,7 +1628,7 @@ int sk_getsockopt(struct sock *sk, int level, int optname,
 		break;
 
 	case SO_RCVBUF:
-		v.val = sk->sk_rcvbuf;
+		v.val = READ_ONCE(sk->sk_rcvbuf);
 		break;
 
 	case SO_REUSEADDR: