netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] bridge: fix parsing of MLDv2 reports
@ 2015-05-22 15:18 Thadeu Lima de Souza Cascardo
  2015-05-22 16:37 ` Cong Wang
  2015-05-22 19:09 ` David Miller
  0 siblings, 2 replies; 3+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2015-05-22 15:18 UTC (permalink / raw)
  To: stephen
  Cc: davem, bridge, netdev, linux-kernel, yoshfuji, Rik.Theys,
	Thadeu Lima de Souza Cascardo

When more than a multicast address is present in a MLDv2 report, all but
the first address is ignored, because the code breaks out of the loop if
there has not been an error adding that address.

This has caused failures when two guests connected through the bridge
tried to communicate using IPv6. Neighbor discoveries would not be
transmitted to the other guest when both used a link-local address and a
static address.

This only happens when there is a MLDv2 querier in the network.

The fix will only break out of the loop when there is a failure adding a
multicast address.

The mdb before the patch:

dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
dev ovirtmgmt port bond0.86 grp ff02::2 temp

After the patch:

dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
dev ovirtmgmt port bond0.86 grp ff02::fb temp
dev ovirtmgmt port bond0.86 grp ff02::2 temp
dev ovirtmgmt port bond0.86 grp ff02::d temp
dev ovirtmgmt port vnet0 grp ff02::1:ff00:76 temp
dev ovirtmgmt port bond0.86 grp ff02::16 temp
dev ovirtmgmt port vnet1 grp ff02::1:ff00:77 temp
dev ovirtmgmt port bond0.86 grp ff02::1:ff00:def temp
dev ovirtmgmt port bond0.86 grp ff02::1:ffa1:40bf temp

Reported-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Tested-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
---
 net/bridge/br_multicast.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 4b6722f..a3abe6e 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1072,7 +1072,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 
 		err = br_ip6_multicast_add_group(br, port, &grec->grec_mca,
 						 vid);
-		if (!err)
+		if (err)
 			break;
 	}
 
-- 
2.4.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] bridge: fix parsing of MLDv2 reports
  2015-05-22 15:18 [PATCH] bridge: fix parsing of MLDv2 reports Thadeu Lima de Souza Cascardo
@ 2015-05-22 16:37 ` Cong Wang
  2015-05-22 19:09 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: Cong Wang @ 2015-05-22 16:37 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo
  Cc: Stephen Hemminger, David Miller,
	bridge@lists.linux-foundation.org, netdev,
	linux-kernel@vger.kernel.org, Hideaki YOSHIFUJI, Rik.Theys

On Fri, May 22, 2015 at 8:18 AM, Thadeu Lima de Souza Cascardo
<cascardo@redhat.com> wrote:
> When more than a multicast address is present in a MLDv2 report, all but
> the first address is ignored, because the code breaks out of the loop if
> there has not been an error adding that address.
>
> This has caused failures when two guests connected through the bridge
> tried to communicate using IPv6. Neighbor discoveries would not be
> transmitted to the other guest when both used a link-local address and a
> static address.
>
> This only happens when there is a MLDv2 querier in the network.
>
> The fix will only break out of the loop when there is a failure adding a
> multicast address.
>
> The mdb before the patch:
>
> dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
> dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
> dev ovirtmgmt port bond0.86 grp ff02::2 temp
>
> After the patch:
>
> dev ovirtmgmt port vnet0 grp ff02::1:ff7d:6603 temp
> dev ovirtmgmt port vnet1 grp ff02::1:ff7d:6604 temp
> dev ovirtmgmt port bond0.86 grp ff02::fb temp
> dev ovirtmgmt port bond0.86 grp ff02::2 temp
> dev ovirtmgmt port bond0.86 grp ff02::d temp
> dev ovirtmgmt port vnet0 grp ff02::1:ff00:76 temp
> dev ovirtmgmt port bond0.86 grp ff02::16 temp
> dev ovirtmgmt port vnet1 grp ff02::1:ff00:77 temp
> dev ovirtmgmt port bond0.86 grp ff02::1:ff00:def temp
> dev ovirtmgmt port bond0.86 grp ff02::1:ffa1:40bf temp
>
> Reported-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
> Tested-by: Rik Theys <Rik.Theys@esat.kuleuven.be>


Fixes:  08b202b67264 ("bridge br_multicast: IPv6 MLD support.")

Good catch!

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] bridge: fix parsing of MLDv2 reports
  2015-05-22 15:18 [PATCH] bridge: fix parsing of MLDv2 reports Thadeu Lima de Souza Cascardo
  2015-05-22 16:37 ` Cong Wang
@ 2015-05-22 19:09 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2015-05-22 19:09 UTC (permalink / raw)
  To: cascardo; +Cc: yoshfuji, netdev, bridge, linux-kernel, Rik.Theys

From: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Date: Fri, 22 May 2015 12:18:59 -0300

> When more than a multicast address is present in a MLDv2 report, all but
> the first address is ignored, because the code breaks out of the loop if
> there has not been an error adding that address.
> 
> This has caused failures when two guests connected through the bridge
> tried to communicate using IPv6. Neighbor discoveries would not be
> transmitted to the other guest when both used a link-local address and a
> static address.
> 
> This only happens when there is a MLDv2 querier in the network.
> 
> The fix will only break out of the loop when there is a failure adding a
> multicast address.
 ...
> Reported-by: Rik Theys <Rik.Theys@esat.kuleuven.be>
> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
> Tested-by: Rik Theys <Rik.Theys@esat.kuleuven.be>

Applied and queued up for -stable, thanks.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-05-22 19:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-22 15:18 [PATCH] bridge: fix parsing of MLDv2 reports Thadeu Lima de Souza Cascardo
2015-05-22 16:37 ` Cong Wang
2015-05-22 19:09 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).