diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index f29059a262da6cbe7c81d1f8e32a619a82a4f3f0..d105b943b2f47b17b0330b8e32da673939ba74ab 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h @@ -370,7 +370,7 @@ static inline bool inet_get_convert_csum(struct sock *sk) static inline bool inet_can_nonlocal_bind(struct net *net, struct inet_sock *inet) { - return net->ipv4.sysctl_ip_nonlocal_bind || + return READ_ONCE(net->ipv4.sysctl_ip_nonlocal_bind) || inet->freebind || inet->transparent; } diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index 940f1e257a90a9851557aca386ec391eb2db01b0..6e4ca837e91dddc9801453dc3f0100c6d22ab438 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c @@ -358,7 +358,7 @@ static int sctp_v4_available(union sctp_addr *addr, struct sctp_sock *sp) if (addr->v4.sin_addr.s_addr != htonl(INADDR_ANY) && ret != RTN_LOCAL && !sp->inet.freebind && - !net->ipv4.sysctl_ip_nonlocal_bind) + !READ_ONCE(net->ipv4.sysctl_ip_nonlocal_bind)) return 0; if (ipv6_only_sock(sctp_opt2sk(sp)))