From 8d3da6d30a7c63034d4ff7d4fc33ea9e3f23cf41 Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Wed, 13 Sep 2017 12:42:13 -0700 Subject: [PATCH] net: don't fast patch mismatched sockets in STRICT mode With FASTREUSE_STRICT we may have sockets on the tb that don't match our fast_sk information, so if our new socket don't strictly match the fast_sk info we need to not go down the fast path and do the inet_csk_bind_conflict so we can look at the other sockets on the tb. Signed-off-by: Josef Bacik --- net/ipv4/inet_connection_sock.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index ff8b15a99e42..fe9cf4862de2 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c @@ -263,6 +263,8 @@ static inline int sk_reuseport_match(struct inet_bind_bucket *tb, */ if (tb->fastreuseport == FASTREUSEPORT_ANY) return 1; + if (tb->fast_ipv6_only && tb->fast_sk_family != sk->sk_family) + return 0; #if IS_ENABLED(CONFIG_IPV6) if (tb->fast_sk_family == AF_INET6) return ipv6_rcv_saddr_equal(&tb->fast_v6_rcv_saddr, -- 2.13.5