Another place where RCU can be used instead of read_lock(&dev_base_lock) This is by inspection, don't have platform or cross-build environment to validate. Signed-off-by: Stephen Hemminger --- a/drivers/parisc/led.c 2009-11-09 22:19:07.223480872 -0800 +++ b/drivers/parisc/led.c 2009-11-10 09:28:38.279438787 -0800 @@ -354,9 +354,8 @@ static __inline__ int led_get_net_activi /* we are running as a workqueue task, so locking dev_base * for reading should be OK */ - read_lock(&dev_base_lock); rcu_read_lock(); - for_each_netdev(&init_net, dev) { + for_each_netdev_rcu(&init_net, dev) { const struct net_device_stats *stats; struct in_device *in_dev = __in_dev_get_rcu(dev); if (!in_dev || !in_dev->ifa_list) @@ -368,7 +367,6 @@ static __inline__ int led_get_net_activi tx_total += stats->tx_packets; } rcu_read_unlock(); - read_unlock(&dev_base_lock); retval = 0; -- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html