On Mon, Jan 08, 2007 at 10:03:50AM -0800, Stephen Hemminger wrote: > On Mon, 08 Jan 2007 08:57:10 -0800 > Ben Greear <[EMAIL PROTECTED]> wrote: > > > Jarek Poplawski wrote: > > > On Fri, Jan 05, 2007 at 12:33:43PM -0800, Ben Greear wrote: > > > ... > > > > > >> So, I do believe this was the problem we were hitting, and it seems > > >> fixed. > > >> > > > > > > Congratulations! > > > > > > But I can see one strange thing in vlan.c: > > > > > > /* Must be invoked with RCU read lock (no preempt) */ > > > static struct vlan_group *__vlan_find_group(int real_dev_ifindex) > > > ... > > > * Must be invoked with RCU read lock (no preempt) > > > */ > > > struct net_device *__find_vlan_dev(struct net_device *real_dev, > > > ... > > > > > > But later in this file no sign of disabling preemption > > > for these calls and for hlist_add_head_rcu and hlist_del_rcu. > > > > > > I can't imagine how this works? > > Preempt is already disabled on the receive path.
I'm not sure you're talking about the same thing - there is blocking possible inside register_vlan_dev and unregister_vlan_dev, grp pointer is held during this blocking - I've thought it's only possible in sleepable RCU... Jarek P. - 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