Currently we only set mc_qrv to sysctl_mld_qrv when interface up. If we
change sysctl_mld_qrv after interface up, it will has no effect.

Fix it by assigning latest sysctl_mld_qrv to idev mc_qrv when join new group.

Reported-by: Ying Xu <yi...@redhat.com>
Signed-off-by: Hangbin Liu <liuhang...@gmail.com>
---
 net/ipv6/mcast.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index dbab62e..bed4890 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -680,6 +680,7 @@ static void igmp6_group_added(struct ifmcaddr6 *mc)
        if (!(dev->flags & IFF_UP) || (mc->mca_flags & MAF_NOREPORT))
                return;
 
+       mc->idev->mc_qrv = sysctl_mld_qrv;
        if (mld_in_v1_mode(mc->idev)) {
                igmp6_join_group(mc);
                return;
-- 
2.5.5

Reply via email to