> -int br_vlan_init(struct net_bridge *br) > +static int br_vlan_init(struct net_bridge *br) > { > struct net_bridge_vlan_group *vg; > int ret = -ENOMEM; > @@ -1083,6 +1085,8 @@ int br_vlan_init(struct net_bridge *br) > return ret; > > err_vlan_add: > + RCU_INIT_POINTER(br->vlgrp, NULL); > + synchronize_rcu(); Calling sychronize_rcu is expensive. And the callback for notifier is always called with rtnl_head. Why not just keep the pointer initialization back in the code where bridge is created, it was safe there.