Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2465540yba; Mon, 15 Apr 2019 12:13:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqxJnYiUrwUrorPiZpWJU22Vf7wEsz8tlNFwHhlP4JLnLk1dfo3q+zuYcff4Y9rG2pSNvY0X X-Received: by 2002:a62:fb0a:: with SMTP id x10mr78227028pfm.179.1555355580360; Mon, 15 Apr 2019 12:13:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555355580; cv=none; d=google.com; s=arc-20160816; b=PSMQz5CGYBSwlTew/b0Yqj+GXmxT4liILpfTg7vNkUI8bCvoasN+4Q91bmCvWXFoyn K4GdRa4Qmc7ty/lEie9mMtomH1GzIZbdv94KvP7ogX7vI4ix3ZPvBzbtKXNjelrQdA+z gR7fxygGy18adq1M/WmQ5ZT3i9em+0+S3a+fDLu9ndfHIQZ1d8wMkR2zL80D0EOXOSx0 AcnVZoKmvCQP9eaNk3OLuYee2+qJQ24E7ScK2uqRO8FjZ3i/AYmQT8GF97Xnq2nDfEOw vo14VaE58e16O6eklLf8khTCfsHayFK1udXVSeHjBkc10QPzMkEIdPkSvgYaLIae2d5M D6RA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=aFOmA6u5AyCZG5Kdyu2k5kobZvIDya4Y7j9uO70Ceyk=; b=CNv30/Pn1QSmBRlm8B+Q6Key2W5h8lBhJV3p4oanlhZ3uQI/AKEIGFb7pBZE49HiUu bNOyYb4/ddXXgNpQlMuFodhW/EH8g3qNdhPc/3pwos9sT8vJPzpzP1yz9IYsIYLOqYPy eFqeWAqeXNk8RvOajdXZLcZHL1+Yz3/qnRlqtWiwsPRP/VCLdB3LwDIMMp/Q+zpWn7tv sPuHndPivc8mXF0RBbz5/TbYVLBOQyPpmPm8b7xb30ijtzzNVLq0+xSOGEnqTJCpIi8E wmziEyIa/N9rhERKjCywn4SeM2yGDrkDSvQfw3NGlpOmUFizUrn3QqNV9Q6aM60ZrT42 /nSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JXRkSB3p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a1si46097767pff.258.2019.04.15.12.12.43; Mon, 15 Apr 2019 12:13:00 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JXRkSB3p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731198AbfDOTLT (ORCPT + 99 others); Mon, 15 Apr 2019 15:11:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:48080 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731178AbfDOTLN (ORCPT ); Mon, 15 Apr 2019 15:11:13 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 38CF3218A1; Mon, 15 Apr 2019 19:11:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555355472; bh=0fFtSvHW+spB6RaS6HOKdeMcaTfsQJUxbI4wf5vMSo4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JXRkSB3pLLPR/mznlhVnE+aWfZ8coRzVF2oNKaLtp09mWX545/GsC3nWF7kn8Xfvm RoYzP+216wI1xtCqpaQkWDdWcSRhA9ChwtJrGVSvKSOQuL96Xl6/ikA0fq2NSK97E9 shl8YsdGkow3Rvj1eH+iWp5E3l69x2OCucFjRTb4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, liam.mcbirnie@boeing.com, Nikolay Aleksandrov , "David S. Miller" , Sasha Levin Subject: [PATCH 5.0 034/117] net: bridge: always clear mcast matching struct on reports and leaves Date: Mon, 15 Apr 2019 21:00:04 +0200 Message-Id: <20190415183746.730481950@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190415183744.887851196@linuxfoundation.org> References: <20190415183744.887851196@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 1515a63fc413f160d20574ab0894e7f1020c7be2 ] We need to be careful and always zero the whole br_ip struct when it is used for matching since the rhashtable change. This patch fixes all the places which didn't properly clear it which in turn might've caused mismatches. Thanks for the great bug report with reproducing steps and bisection. Steps to reproduce (from the bug report): ip link add br0 type bridge mcast_querier 1 ip link set br0 up ip link add v2 type veth peer name v3 ip link set v2 master br0 ip link set v2 up ip link set v3 up ip addr add 3.0.0.2/24 dev v3 ip netns add test ip link add v1 type veth peer name v1 netns test ip link set v1 master br0 ip link set v1 up ip -n test link set v1 up ip -n test addr add 3.0.0.1/24 dev v1 # Multicast receiver ip netns exec test socat UDP4-RECVFROM:5588,ip-add-membership=224.224.224.224:3.0.0.1,fork - # Multicast sender echo hello | nc -u -s 3.0.0.2 224.224.224.224 5588 Reported-by: liam.mcbirnie@boeing.com Fixes: 19e3a9c90c53 ("net: bridge: convert multicast to generic rhashtable") Signed-off-by: Nikolay Aleksandrov Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/bridge/br_multicast.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index ac92b2eb32b1..e4777614a8a0 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -599,6 +599,7 @@ static int br_ip4_multicast_add_group(struct net_bridge *br, if (ipv4_is_local_multicast(group)) return 0; + memset(&br_group, 0, sizeof(br_group)); br_group.u.ip4 = group; br_group.proto = htons(ETH_P_IP); br_group.vid = vid; @@ -1489,6 +1490,7 @@ static void br_ip4_multicast_leave_group(struct net_bridge *br, own_query = port ? &port->ip4_own_query : &br->ip4_own_query; + memset(&br_group, 0, sizeof(br_group)); br_group.u.ip4 = group; br_group.proto = htons(ETH_P_IP); br_group.vid = vid; @@ -1512,6 +1514,7 @@ static void br_ip6_multicast_leave_group(struct net_bridge *br, own_query = port ? &port->ip6_own_query : &br->ip6_own_query; + memset(&br_group, 0, sizeof(br_group)); br_group.u.ip6 = *group; br_group.proto = htons(ETH_P_IPV6); br_group.vid = vid; -- 2.19.1