summaryrefslogtreecommitdiffstats
path: root/net/rose
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
commit59223edaa18759982db0a8aced0e77457d10c68e (patch)
tree89354903b01fa0a447bffeefe00df3044495db2e /net/rose
parentdb7d4daea91e105e3859cf461d7e53b9b77454b2 (diff)
Merge with Linux 2.3.6. Sorry, this isn't tested on silicon, I don't
have a MIPS box at hand.
Diffstat (limited to 'net/rose')
-rw-r--r--net/rose/rose_route.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c
index 1fad6b7cc..28a6f8adb 100644
--- a/net/rose/rose_route.c
+++ b/net/rose/rose_route.c
@@ -543,10 +543,13 @@ struct device *rose_dev_first(void)
{
struct device *dev, *first = NULL;
- for (dev = dev_base; dev != NULL; dev = dev->next)
+ read_lock(&dev_base_lock);
+ for (dev = dev_base; dev != NULL; dev = dev->next) {
if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE)
if (first == NULL || strncmp(dev->name, first->name, 3) < 0)
first = dev;
+ }
+ read_unlock(&dev_base_lock);
return first;
}
@@ -558,11 +561,14 @@ struct device *rose_dev_get(rose_address *addr)
{
struct device *dev;
- for (dev = dev_base; dev != NULL; dev = dev->next)
+ read_lock(&dev_base_lock);
+ for (dev = dev_base; dev != NULL; dev = dev->next) {
if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE && rosecmp(addr, (rose_address *)dev->dev_addr) == 0)
- return dev;
-
- return NULL;
+ goto out;
+ }
+out:
+ read_unlock(&dev_base_lock);
+ return dev;
}
struct rose_route *rose_route_free_lci(unsigned int lci, struct rose_neigh *neigh)