aboutsummaryrefslogtreecommitdiff
path: root/drivers/parisc
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-10-08 03:31:22 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-10-08 03:31:22 -0400
commitd95300758bed9e0f783f3e3b4fd037bf0a21abe0 (patch)
tree994823b6e0b88597eded79f9eeb0f44b580c89e5 /drivers/parisc
parente12669e774be403c84baa651306d305752a35cd8 (diff)
parent829841146878e082613a49581ae252c071057c23 (diff)
Merge branch 'master'
Diffstat (limited to 'drivers/parisc')
-rw-r--r--drivers/parisc/led.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c
index e90fb72a696..286902298e3 100644
--- a/drivers/parisc/led.c
+++ b/drivers/parisc/led.c
@@ -37,6 +37,7 @@
#include <linux/proc_fs.h>
#include <linux/ctype.h>
#include <linux/blkdev.h>
+#include <linux/rcupdate.h>
#include <asm/io.h>
#include <asm/processor.h>
#include <asm/hardware.h>
@@ -358,9 +359,10 @@ static __inline__ int led_get_net_activity(void)
/* we are running as tasklet, so locking dev_base
* for reading should be OK */
read_lock(&dev_base_lock);
+ rcu_read_lock();
for (dev = dev_base; dev; dev = dev->next) {
struct net_device_stats *stats;
- struct in_device *in_dev = __in_dev_get(dev);
+ struct in_device *in_dev = __in_dev_get_rcu(dev);
if (!in_dev || !in_dev->ifa_list)
continue;
if (LOOPBACK(in_dev->ifa_list->ifa_local))
@@ -371,6 +373,7 @@ static __inline__ int led_get_net_activity(void)
rx_total += stats->rx_packets;
tx_total += stats->tx_packets;
}
+ rcu_read_unlock();
read_unlock(&dev_base_lock);
retval = 0;