Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932395AbdIRQ3f (ORCPT ); Mon, 18 Sep 2017 12:29:35 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:33224 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756172AbdIRQ3J (ORCPT ); Mon, 18 Sep 2017 12:29:09 -0400 X-Google-Smtp-Source: AOwi7QDS5+QDiLuRKKsIvjAsuqz+2aQEqJl1VMB2DNMEZKi0I51UdvY/+3LuqzOvDhfQ1IHKHJ6I4Q== From: josef@toxicpanda.com X-Google-Original-From: jbacik@fb.com To: davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, crobinso@redhat.com, labbott@redhat.com, kernel-team@fb.com Cc: Josef Bacik , stable@vger.kernel.org Subject: [PATCH 3/3] inet: fix improper empty comparison Date: Mon, 18 Sep 2017 12:28:57 -0400 Message-Id: <1505752137-15522-4-git-send-email-jbacik@fb.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1505752137-15522-1-git-send-email-jbacik@fb.com> References: <1505752137-15522-1-git-send-email-jbacik@fb.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1155 Lines: 38 From: Josef Bacik When doing my reuseport rework I screwed up and changed a if (hlist_empty(&tb->owners)) to if (!hlist_empty(&tb->owners)) This is obviously bad as all of the reuseport/reuse logic was reversed, which caused weird problems like allowing an ipv4 bind conflict if we opened an ipv4 only socket on a port followed by an ipv6 only socket on the same port. Cc: stable@vger.kernel.org Fixes: b9470c27607b ("inet: kill smallest_size and smallest_port") Reported-by: Cole Robinson Signed-off-by: Josef Bacik --- 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 a1bf30438bc5..c039c937ba90 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c @@ -321,7 +321,7 @@ int inet_csk_get_port(struct sock *sk, unsigned short snum) goto fail_unlock; } success: - if (!hlist_empty(&tb->owners)) { + if (hlist_empty(&tb->owners)) { tb->fastreuse = reuse; if (sk->sk_reuseport) { tb->fastreuseport = FASTREUSEPORT_ANY; -- 2.7.4