diff options
Diffstat (limited to 'net/rose')
-rw-r--r-- | net/rose/af_rose.c | 7 | ||||
-rw-r--r-- | net/rose/rose_route.c | 28 |
2 files changed, 19 insertions, 16 deletions
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c index 502cce76621d..8feb9e5d6623 100644 --- a/net/rose/af_rose.c +++ b/net/rose/af_rose.c | |||
@@ -512,12 +512,13 @@ static struct proto rose_proto = { | |||
512 | .obj_size = sizeof(struct rose_sock), | 512 | .obj_size = sizeof(struct rose_sock), |
513 | }; | 513 | }; |
514 | 514 | ||
515 | static int rose_create(struct net *net, struct socket *sock, int protocol) | 515 | static int rose_create(struct net *net, struct socket *sock, int protocol, |
516 | int kern) | ||
516 | { | 517 | { |
517 | struct sock *sk; | 518 | struct sock *sk; |
518 | struct rose_sock *rose; | 519 | struct rose_sock *rose; |
519 | 520 | ||
520 | if (net != &init_net) | 521 | if (!net_eq(net, &init_net)) |
521 | return -EAFNOSUPPORT; | 522 | return -EAFNOSUPPORT; |
522 | 523 | ||
523 | if (sock->type != SOCK_SEQPACKET || protocol != 0) | 524 | if (sock->type != SOCK_SEQPACKET || protocol != 0) |
@@ -1509,7 +1510,7 @@ static const struct file_operations rose_info_fops = { | |||
1509 | }; | 1510 | }; |
1510 | #endif /* CONFIG_PROC_FS */ | 1511 | #endif /* CONFIG_PROC_FS */ |
1511 | 1512 | ||
1512 | static struct net_proto_family rose_family_ops = { | 1513 | static const struct net_proto_family rose_family_ops = { |
1513 | .family = PF_ROSE, | 1514 | .family = PF_ROSE, |
1514 | .create = rose_create, | 1515 | .create = rose_create, |
1515 | .owner = THIS_MODULE, | 1516 | .owner = THIS_MODULE, |
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 | ||