Andy Gospodarek <[EMAIL PROTECTED]> wrote: [...] >Jay's patches will not fix this issue. I think something like this did >it for me, but as I mentioned to Jay in the last thread, I'm not >convinced it doesn't violate some of the locking expectations we have. > >diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c >index 423298c..3c6619a 100644 >--- a/drivers/net/bonding/bond_main.c >+++ b/drivers/net/bonding/bond_main.c >@@ -3915,7 +3915,7 @@ static void bond_set_multicast_list(struct net_device >*bond_dev) > struct bonding *bond = bond_dev->priv; > struct dev_mc_list *dmi; > >- write_lock_bh(&bond->lock); >+ read_lock(&bond->lock); > > /* > * Do promisc before checking multicast_mode >@@ -3957,7 +3957,7 @@ static void bond_set_multicast_list(struct net_device >*bond_dev) > bond_mc_list_destroy(bond); > bond_mc_list_copy(bond_dev->mc_list, bond, GFP_ATOMIC); > >- write_unlock_bh(&bond->lock); >+ read_unlock(&bond->lock); > } > > /*
Actually, I think we might be good here with no locks at all, as it appears that all of the accesses to and manipulations of the bond->mc_list are protected under RTNL. I haven't checked this 100%, but it looks that way to me after 20 minutes of poking around. I'm pretty sure that bonding doesn't internally mess with the mc_lists without RTNL, it's the outside callers that I'm not entirely sure of. I delve into "no locks" because bond_set_multicast_list should do a bunch of things with no extra locks beyond RTNL (all of the calls to bond_set_promisc, and _allmulti), so simply removing the acquisition of bond->lock would help there, too. I don't think we'll go down the promisc or allmulti paths when called from ipv6 (which holds extra locks in addition to RTNL) because those (apparently) won't alter the IFF_PROMISC or IFF_ALLMULTI flags. -J --- -Jay Vosburgh, IBM Linux Technology Center, [EMAIL PROTECTED] -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html