On Mon, Feb 11, 2008 at 08:55:41AM +0100, Frank Blaschka wrote: > Paul E. McKenney schrieb: > > On Fri, Feb 08, 2008 at 03:10:00PM +0100, [EMAIL PROTECTED] wrote: > >> From: Frank Blaschka <[EMAIL PROTECTED]> > >> > >> List of major changes and improvements: > >> no manipulation of the global ARP constructor > >> clean code split into core, layer 2 and layer 3 functionality > >> better exploitation of the ethtool interface > >> better representation of the various hardware capabilities > >> fix packet socket support (tcpdump), no fake_ll required > >> osasnmpd notification via udev events > >> coding style and beautification > > > > One question below... > > > >> Signed-off-by: Frank Blaschka <[EMAIL PROTECTED]> > >> --- > > > > [ . . . ] > > > >> +static void qeth_l3_vlan_rx_add_vid(struct net_device *dev, unsigned > >> short vid) > >> +{ > >> + struct net_device *vlandev; > >> + struct qeth_card *card = (struct qeth_card *) dev->priv; > >> + struct in_device *in_dev; > >> + > >> + if (card->info.type == QETH_CARD_TYPE_IQD) > >> + return; > >> + > >> + vlandev = vlan_group_get_device(card->vlangrp, vid); > >> + vlandev->neigh_setup = qeth_l3_neigh_setup; > >> + > >> + in_dev = __in_dev_get_rcu(vlandev); > > > > Is this really in an RCU read-side critical section? Or is this just > > using common code? > > > > Thanx, Paul > > -- > > 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 > > > > Hi Paul, > > thanks for pointing at this. Using __in_dev_get_rcu without the rcu lock > is probably a bug at this place (right?).
It would be a bug -unless- you are holding the update-side lock. > Using in_dev_get/in_dev_put > would be more appropriate. Same for qeth_l3_free_vlan_addresses4(), here > we take the rcu read lock, but in_dev_get/in_dev_put would be the better > choice. What do you think? Ummm... "It depends." ;-) Keeping in mind that I am not an expert on this part of the kernel, I would guess that qeth_l3_free_vlan_addresses4() is not particularly performance-sensitive, so I don't see any reason in_dev_get/in_dev_put would be a problem. If it turns out that qeth_l3_free_vlan_addresses4() is in fact performance-sensitive, then rcu_read_lock()/rcu_read_unlock() would be a better choice. Thanx, Paul -- 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