diff mbox

inet: don't use sk_v6_rcv_saddr directly

Message ID 1484866066-25407-1-git-send-email-jbacik@fb.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Josef Bacik Jan. 19, 2017, 10:47 p.m. UTC
When comparing two sockets we need to use inet6_rcv_saddr so we get a NULL
sk_v6_rcv_saddr if the socket isn't AF_INET6, otherwise our comparison function
can be wrong.

Fixes: 637bc8b ("inet: reset tb->fastreuseport when adding a reuseport sk")
Signed-off-by: Josef Bacik <jbacik@fb.com>
---
 net/ipv4/inet_connection_sock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Josef Bacik Jan. 20, 2017, 2:18 p.m. UTC | #1
On Thu, Jan 19, 2017 at 5:47 PM, Josef Bacik <jbacik@fb.com> wrote:
> When comparing two sockets we need to use inet6_rcv_saddr so we get a 
> NULL
> sk_v6_rcv_saddr if the socket isn't AF_INET6, otherwise our 
> comparison function
> can be wrong.
> 
> Fixes: 637bc8b ("inet: reset tb->fastreuseport when adding a 
> reuseport sk")
> Signed-off-by: Josef Bacik <jbacik@fb.com>
> ---
>  net/ipv4/inet_connection_sock.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/ipv4/inet_connection_sock.c 
> b/net/ipv4/inet_connection_sock.c
> index 096a085..a336c42 100644
> --- a/net/ipv4/inet_connection_sock.c
> +++ b/net/ipv4/inet_connection_sock.c
> @@ -99,7 +99,7 @@ int inet_rcv_saddr_equal(const struct sock *sk, 
> const struct sock *sk2,
>  #if IS_ENABLED(CONFIG_IPV6)
>  	if (sk->sk_family == AF_INET6)
>  		return ipv6_rcv_saddr_equal(&sk->sk_v6_rcv_saddr,
> -					    &sk2->sk_v6_rcv_saddr,
> +					    inet6_rcv_saddr(sk2),
>  					    sk->sk_rcv_saddr,
>  					    sk2->sk_rcv_saddr,
>  					    ipv6_only_sock(sk),
> --
> 2.5.5

Sorry I forgot to tag this, it's for net-next.  Thanks,

Josef
David Miller Jan. 20, 2017, 7:36 p.m. UTC | #2
From: Josef Bacik <jbacik@fb.com>
Date: Thu, 19 Jan 2017 17:47:46 -0500

> When comparing two sockets we need to use inet6_rcv_saddr so we get a NULL
> sk_v6_rcv_saddr if the socket isn't AF_INET6, otherwise our comparison function
> can be wrong.
> 
> Fixes: 637bc8b ("inet: reset tb->fastreuseport when adding a reuseport sk")
> Signed-off-by: Josef Bacik <jbacik@fb.com>

Applied, thanks.
diff mbox

Patch

diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 096a085..a336c42 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -99,7 +99,7 @@  int inet_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2,
 #if IS_ENABLED(CONFIG_IPV6)
 	if (sk->sk_family == AF_INET6)
 		return ipv6_rcv_saddr_equal(&sk->sk_v6_rcv_saddr,
-					    &sk2->sk_v6_rcv_saddr,
+					    inet6_rcv_saddr(sk2),
 					    sk->sk_rcv_saddr,
 					    sk2->sk_rcv_saddr,
 					    ipv6_only_sock(sk),