Re: [PATCH][MCAST]IPv6: small fix for ip6_mc_msfilter(...)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Nov 01, 2005 at 11:10:29PM -0800, David Stevens wrote:
> Willy Tarreau <[email protected]> wrote on 11/01/2005 09:47:02 PM:
> 
> > Hi,
> > 
> > On Tue, Nov 01, 2005 at 06:37:43PM +0800, Yan Zheng wrote:
> > > You can reproduce this bug by follow codes. This program will cause a
> > > change to include report even though the first socket's filter mode is
> > > exclude.
> > 
> > I've not clearly understood the nature of the bug, does it also
> > affect 2.4 ? Marcelo will be releasing 2.4.32 in a few days, so
> > it would be wise to merge the fix soon.
> > 
> > Regards,
> > Willy
> > 
> 
>         Yes.
>  
>         Multicast source filters aren't widely used yet, and that's
> really the only feature that's affected if an application actually
> exercises this bug, as far as I can tell. An ordinary filter-less
> multicast join should still work, and only forwarded multicast
> traffic making use of filters and doing empty-source filters with
> the MSFILTER ioctl would be at risk of not getting multicast
> traffic forwarded to them because the reports generated would not
> be based on the correct counts.
>         But having the fix in is better than having it broken, even
> for that case. :-)


OK, thanks for the clarification, I understand better now :-)

Marcelo, David, does this backport seem appropriate for 2.4.32 ? I verified
that it compiles, nothing more. If it's OK, I've noticed another patch that
Yan posted today and which might be of interest before a very solid release.

Regards,
Willy

diff -urN linux-2.4.32-rc2/net/ipv4/igmp.c linux-2.4.32-rc2-mcast/net/ipv4/igmp.c
--- linux-2.4.32-rc2/net/ipv4/igmp.c	2005-11-02 10:16:03.000000000 +0100
+++ linux-2.4.32-rc2-mcast/net/ipv4/igmp.c	2005-11-02 10:20:33.000000000 +0100
@@ -1876,8 +1876,11 @@
 			sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max));
 			goto done;
 		}
-	} else
-		newpsl = 0;
+	} else {
+		newpsl = NULL;
+		(void) ip_mc_add_src(in_dev, &msf->imsf_multiaddr,
+		       msf->imsf_fmode, 0, NULL, 0);
+	}
 	psl = pmc->sflist;
 	if (psl) {
 		(void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,
diff -urN linux-2.4.32-rc2/net/ipv6/mcast.c linux-2.4.32-rc2-mcast/net/ipv6/mcast.c
--- linux-2.4.32-rc2/net/ipv6/mcast.c	2005-11-02 10:16:03.000000000 +0100
+++ linux-2.4.32-rc2-mcast/net/ipv6/mcast.c	2005-11-02 10:21:49.000000000 +0100
@@ -505,8 +505,11 @@
 			sock_kfree_s(sk, newpsl, IP6_SFLSIZE(newpsl->sl_max));
 			goto done;
 		}
-	} else
-		newpsl = 0;
+	} else {
+		newpsl = NULL;
+		(void) ip6_mc_add_src(idev, group, gsf->gf_fmode, 0, NULL, 0);
+	}
+
 	psl = pmc->sflist;
 	if (psl) {
 		(void) ip6_mc_del_src(idev, group, pmc->sfmode,

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux