diff options
Diffstat (limited to 'net/rose/rose_route.c')
-rw-r--r-- | net/rose/rose_route.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c index f3e21989b88c..795c4b025e31 100644 --- a/net/rose/rose_route.c +++ b/net/rose/rose_route.c | |||
@@ -77,8 +77,9 @@ static int __must_check rose_add_node(struct rose_route_struct *rose_route, | |||
77 | 77 | ||
78 | rose_neigh = rose_neigh_list; | 78 | rose_neigh = rose_neigh_list; |
79 | while (rose_neigh != NULL) { | 79 | while (rose_neigh != NULL) { |
80 | if (ax25cmp(&rose_route->neighbour, &rose_neigh->callsign) == 0 | 80 | if (ax25cmp(&rose_route->neighbour, |
81 | && rose_neigh->dev == dev) | 81 | &rose_neigh->callsign) == 0 && |
82 | rose_neigh->dev == dev) | ||
82 | break; | 83 | break; |
83 | rose_neigh = rose_neigh->next; | 84 | rose_neigh = rose_neigh->next; |
84 | } | 85 | } |
@@ -311,8 +312,9 @@ static int rose_del_node(struct rose_route_struct *rose_route, | |||
311 | 312 | ||
312 | rose_neigh = rose_neigh_list; | 313 | rose_neigh = rose_neigh_list; |
313 | while (rose_neigh != NULL) { | 314 | while (rose_neigh != NULL) { |
314 | if (ax25cmp(&rose_route->neighbour, &rose_neigh->callsign) == 0 | 315 | if (ax25cmp(&rose_route->neighbour, |
315 | && rose_neigh->dev == dev) | 316 | &rose_neigh->callsign) == 0 && |
317 | rose_neigh->dev == dev) | ||
316 | break; | 318 | break; |
317 | rose_neigh = rose_neigh->next; | 319 | rose_neigh = rose_neigh->next; |
318 | } | 320 | } |
@@ -600,13 +602,13 @@ struct net_device *rose_dev_first(void) | |||
600 | { | 602 | { |
601 | struct net_device *dev, *first = NULL; | 603 | struct net_device *dev, *first = NULL; |
602 | 604 | ||
603 | read_lock(&dev_base_lock); | 605 | rcu_read_lock(); |
604 | for_each_netdev(&init_net, dev) { | 606 | for_each_netdev_rcu(&init_net, dev) { |
605 | if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE) | 607 | if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE) |
606 | if (first == NULL || strncmp(dev->name, first->name, 3) < 0) | 608 | if (first == NULL || strncmp(dev->name, first->name, 3) < 0) |
607 | first = dev; | 609 | first = dev; |
608 | } | 610 | } |
609 | read_unlock(&dev_base_lock); | 611 | rcu_read_unlock(); |
610 | 612 | ||
611 | return first; | 613 | return first; |
612 | } | 614 | } |
@@ -618,8 +620,8 @@ struct net_device *rose_dev_get(rose_address *addr) | |||
618 | { | 620 | { |
619 | struct net_device *dev; | 621 | struct net_device *dev; |
620 | 622 | ||
621 | read_lock(&dev_base_lock); | 623 | rcu_read_lock(); |
622 | for_each_netdev(&init_net, dev) { | 624 | for_each_netdev_rcu(&init_net, dev) { |
623 | if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE && rosecmp(addr, (rose_address *)dev->dev_addr) == 0) { | 625 | if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE && rosecmp(addr, (rose_address *)dev->dev_addr) == 0) { |
624 | dev_hold(dev); | 626 | dev_hold(dev); |
625 | goto out; | 627 | goto out; |
@@ -627,7 +629,7 @@ struct net_device *rose_dev_get(rose_address *addr) | |||
627 | } | 629 | } |
628 | dev = NULL; | 630 | dev = NULL; |
629 | out: | 631 | out: |
630 | read_unlock(&dev_base_lock); | 632 | rcu_read_unlock(); |
631 | return dev; | 633 | return dev; |
632 | } | 634 | } |
633 | 635 | ||
@@ -635,14 +637,14 @@ static int rose_dev_exists(rose_address *addr) | |||
635 | { | 637 | { |
636 | struct net_device *dev; | 638 | struct net_device *dev; |
637 | 639 | ||
638 | read_lock(&dev_base_lock); | 640 | rcu_read_lock(); |
639 | for_each_netdev(&init_net, dev) { | 641 | for_each_netdev_rcu(&init_net, dev) { |
640 | if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE && rosecmp(addr, (rose_address *)dev->dev_addr) == 0) | 642 | if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE && rosecmp(addr, (rose_address *)dev->dev_addr) == 0) |
641 | goto out; | 643 | goto out; |
642 | } | 644 | } |
643 | dev = NULL; | 645 | dev = NULL; |
644 | out: | 646 | out: |
645 | read_unlock(&dev_base_lock); | 647 | rcu_read_unlock(); |
646 | return dev != NULL; | 648 | return dev != NULL; |
647 | } | 649 | } |
648 | 650 | ||