Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6.git] / arch / s390 / appldata / appldata_net_sum.c
index 3b74655..4ce7fa9 100644 (file)
@@ -67,7 +67,6 @@ static void appldata_get_net_sum_data(void *data)
        int i;
        struct appldata_net_sum_data *net_data;
        struct net_device *dev;
-       struct net_device_stats *stats;
        unsigned long rx_packets, tx_packets, rx_bytes, tx_bytes, rx_errors,
                        tx_errors, rx_dropped, tx_dropped, collisions;
 
@@ -84,9 +83,11 @@ static void appldata_get_net_sum_data(void *data)
        rx_dropped = 0;
        tx_dropped = 0;
        collisions = 0;
-       read_lock(&dev_base_lock);
-       for_each_netdev(&init_net, dev) {
-               stats = dev->get_stats(dev);
+
+       rcu_read_lock();
+       for_each_netdev_rcu(&init_net, dev) {
+               const struct net_device_stats *stats = dev_get_stats(dev);
+
                rx_packets += stats->rx_packets;
                tx_packets += stats->tx_packets;
                rx_bytes   += stats->rx_bytes;
@@ -98,7 +99,8 @@ static void appldata_get_net_sum_data(void *data)
                collisions += stats->collisions;
                i++;
        }
-       read_unlock(&dev_base_lock);
+       rcu_read_unlock();
+
        net_data->nr_interfaces = i;
        net_data->rx_packets = rx_packets;
        net_data->tx_packets = tx_packets;