diff options
Diffstat (limited to 'drivers/parisc/led.c')
-rw-r--r-- | drivers/parisc/led.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index e90fb72a6962..286902298e33 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/proc_fs.h> | 37 | #include <linux/proc_fs.h> |
38 | #include <linux/ctype.h> | 38 | #include <linux/ctype.h> |
39 | #include <linux/blkdev.h> | 39 | #include <linux/blkdev.h> |
40 | #include <linux/rcupdate.h> | ||
40 | #include <asm/io.h> | 41 | #include <asm/io.h> |
41 | #include <asm/processor.h> | 42 | #include <asm/processor.h> |
42 | #include <asm/hardware.h> | 43 | #include <asm/hardware.h> |
@@ -358,9 +359,10 @@ static __inline__ int led_get_net_activity(void) | |||
358 | /* we are running as tasklet, so locking dev_base | 359 | /* we are running as tasklet, so locking dev_base |
359 | * for reading should be OK */ | 360 | * for reading should be OK */ |
360 | read_lock(&dev_base_lock); | 361 | read_lock(&dev_base_lock); |
362 | rcu_read_lock(); | ||
361 | for (dev = dev_base; dev; dev = dev->next) { | 363 | for (dev = dev_base; dev; dev = dev->next) { |
362 | struct net_device_stats *stats; | 364 | struct net_device_stats *stats; |
363 | struct in_device *in_dev = __in_dev_get(dev); | 365 | struct in_device *in_dev = __in_dev_get_rcu(dev); |
364 | if (!in_dev || !in_dev->ifa_list) | 366 | if (!in_dev || !in_dev->ifa_list) |
365 | continue; | 367 | continue; |
366 | if (LOOPBACK(in_dev->ifa_list->ifa_local)) | 368 | if (LOOPBACK(in_dev->ifa_list->ifa_local)) |
@@ -371,6 +373,7 @@ static __inline__ int led_get_net_activity(void) | |||
371 | rx_total += stats->rx_packets; | 373 | rx_total += stats->rx_packets; |
372 | tx_total += stats->tx_packets; | 374 | tx_total += stats->tx_packets; |
373 | } | 375 | } |
376 | rcu_read_unlock(); | ||
374 | read_unlock(&dev_base_lock); | 377 | read_unlock(&dev_base_lock); |
375 | 378 | ||
376 | retval = 0; | 379 | retval = 0; |