diff options
author | Patrick McHardy <kaber@trash.net> | 2007-05-03 03:28:13 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-05-03 03:28:13 -0700 |
commit | 4e9cac2ba437fcb093c7417b1cd91a77ebd1756a (patch) | |
tree | bbcf898f720eb19d9d6fbc196902ec93d0748f84 /net/core/dev.c | |
parent | 5b35fad9d4fc2fcaf5c23887c1de1bc3eb28ab8c (diff) |
[NET]: Add __dev_getfirstbyhwtype
Add __dev_getfirstbyhwtype for callers that don't want a reference but
some data from the device and thus need to take the rtnl anyway.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index eb999003bbb..c305819b726 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -576,17 +576,28 @@ struct net_device *dev_getbyhwaddr(unsigned short type, char *ha) EXPORT_SYMBOL(dev_getbyhwaddr); -struct net_device *dev_getfirstbyhwtype(unsigned short type) +struct net_device *__dev_getfirstbyhwtype(unsigned short type) { struct net_device *dev; - rtnl_lock(); + ASSERT_RTNL(); for (dev = dev_base; dev; dev = dev->next) { - if (dev->type == type) { - dev_hold(dev); + if (dev->type == type) break; - } } + return dev; +} + +EXPORT_SYMBOL(__dev_getfirstbyhwtype); + +struct net_device *dev_getfirstbyhwtype(unsigned short type) +{ + struct net_device *dev; + + rtnl_lock(); + dev = __dev_getfirstbyhwtype(type); + if (dev) + dev_hold(dev); rtnl_unlock(); return dev; } |