diff options
-rw-r--r-- | net/ipv4/igmp.c | 5 | ||||
-rw-r--r-- | net/ipv6/mcast.c | 4 |
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, |