diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-06-17 13:25:08 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-06-17 13:25:08 +0000 |
commit | 59223edaa18759982db0a8aced0e77457d10c68e (patch) | |
tree | 89354903b01fa0a447bffeefe00df3044495db2e /net/rose | |
parent | db7d4daea91e105e3859cf461d7e53b9b77454b2 (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.c | 16 |
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) |