aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/igmp.c5
-rw-r--r--net/ipv6/mcast.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 8b6d3939e1e6..c6247fc84060 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1908,8 +1908,11 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex)
1908 sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max)); 1908 sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max));
1909 goto done; 1909 goto done;
1910 } 1910 }
1911 } else 1911 } else {
1912 newpsl = NULL; 1912 newpsl = NULL;
1913 (void) ip_mc_add_src(in_dev, &msf->imsf_multiaddr,
1914 msf->imsf_fmode, 0, NULL, 0);
1915 }
1913 psl = pmc->sflist; 1916 psl = pmc->sflist;
1914 if (psl) { 1917 if (psl) {
1915 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, 1918 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 966b2372aaab..f15e04ad026e 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -545,8 +545,10 @@ int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf)
545 sock_kfree_s(sk, newpsl, IP6_SFLSIZE(newpsl->sl_max)); 545 sock_kfree_s(sk, newpsl, IP6_SFLSIZE(newpsl->sl_max));
546 goto done; 546 goto done;
547 } 547 }
548 } else 548 } else {
549 newpsl = NULL; 549 newpsl = NULL;
550 (void) ip6_mc_add_src(idev, group, gsf->gf_fmode, 0, NULL, 0);
551 }
550 psl = pmc->sflist; 552 psl = pmc->sflist;
551 if (psl) { 553 if (psl) {
552 (void) ip6_mc_del_src(idev, group, pmc->sfmode, 554 (void) ip6_mc_del_src(idev, group, pmc->sfmode,