Subject: Re: AW: AW: Problem receiving multicast with kernel.2.6.24 #3

From: Patrick McHardy <[email-masked]>
Date: Tue, 19 Feb 2008 15:02:33 +0100

Reither Robert wrote:
> Visit AVD on prolight+sound in Frankfurt from 12.-15. March 2008 - Hall 8.0, Stand G16
> ________________________________________________________________________
> 
> 
> 
> OK, found one solution (but i think, this should not the normal way)
> 
> MC joining first the VLAN device (eth0.3) and than the physical (eth0) does the trick, 100% success ...
> 
> Doing it the opposite way, gives the same problem as before ...
> 
> So somehow joining the VLAN interface disrupts the join to the physical one ...
> 
> Ideas ?

Does this patch help?
commit 6548b91f39381b2c5f02f99c14734546354bff89
Author: Jorge Boncompte [DTI2] <[email-masked]>
Date:   Mon Feb 18 16:02:01 2008 +0100

    [NET]: Messed multicast lists after dev_mc_sync/unsync
    
    Commit a0a400d79e3dd7843e7e81baa3ef2957bdc292d0 from you
    introduced a new field "da_synced" to struct dev_addr_list that is
    not properly initialized to 0. So when any of the current users (8021q,
    macvlan, mac80211) calls dev_mc_sync/unsync they mess the address
    list for both devices.
    
    The attached patch fixed it for me and avoid future problems.
    
    Signed-off-by: Jorge Boncompte [DTI2] <[email-masked]>
    Signed-off-by: Patrick McHardy <[email-masked]>

diff --git a/net/core/dev.c b/net/core/dev.c
index 6cfc123..9516105 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2900,7 +2900,7 @@ int __dev_addr_add(struct dev_addr_list **list, int *count,
 		}
 	}
 
-	da = kmalloc(sizeof(*da), GFP_ATOMIC);
+	da = kzalloc(sizeof(*da), GFP_ATOMIC);
 	if (da == NULL)
 		return -ENOMEM;
 	memcpy(da->da_addr, addr, alen);