On 12/4/18 5:01 PM, Nikolay Aleksandrov wrote: > Hi, > The current bridge multicast code uses a custom rhashtable > implementation which predates the generic rhashtable API. Patch 01 > converts it to use the generic kernel rhashtable which simplifies the > code a lot and removes duplicated functionality. The convert also makes > hash_elasticity obsolete as the generic rhashtable already has such > checks and has a fixed elasticity of RHT_ELASTICITY (16 currently) so we > emit a warning whenever elasticity is set and return RHT_ELASTICITY when > read (patch 02). Since now we have the generic rhashtable which > autoshrinks we can be more liberal with the default hash maximum so patch > 03 increases it to 4096 and moves it to a define in br_private.h. > > v2: send the latest version of the set which handles when IGMP snooping > is not defined, changes are in patch 01 > > Thanks, > Nik
Unfortunately I'll have to send a v3, I missed the fact that rhashtable_lookup requires RCU to be always held and even though br_mdb_ip_get() does the lookups under multicast_lock, we can still trigger suspicious RCU usage because RCU is not held in those protected places. Need to add a non-rcu mdb lookup variant. On a related note I saw Paul's call_rcu patches hit, so I'll wait for those to go in and will rebase on top of them before sending the v3 as the bridge change will have a conflict with this set. Thanks, Nik