diff options
author | Patrick McHardy <kaber@trash.net> | 2007-05-03 06:28:13 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-05-03 06:28:13 -0400 |
commit | 4e9cac2ba437fcb093c7417b1cd91a77ebd1756a (patch) | |
tree | bbcf898f720eb19d9d6fbc196902ec93d0748f84 /net | |
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')
-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 eb999003bbb7..c305819b7266 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) | |||
576 | 576 | ||
577 | EXPORT_SYMBOL(dev_getbyhwaddr); | 577 | EXPORT_SYMBOL(dev_getbyhwaddr); |
578 | 578 | ||
579 | struct net_device *dev_getfirstbyhwtype(unsigned short type) | 579 | struct net_device *__dev_getfirstbyhwtype(unsigned short type) |
580 | { | 580 | { |
581 | struct net_device *dev; | 581 | struct net_device *dev; |
582 | 582 | ||
583 | rtnl_lock(); | 583 | ASSERT_RTNL(); |
584 | for (dev = dev_base; dev; dev = dev->next) { | 584 | for (dev = dev_base; dev; dev = dev->next) { |
585 | if (dev->type == type) { | 585 | if (dev->type == type) |
586 | dev_hold(dev); | ||
587 | break; | 586 | break; |
588 | } | ||
589 | } | 587 | } |
588 | return dev; | ||
589 | } | ||
590 | |||
591 | EXPORT_SYMBOL(__dev_getfirstbyhwtype); | ||
592 | |||
593 | struct net_device *dev_getfirstbyhwtype(unsigned short type) | ||
594 | { | ||
595 | struct net_device *dev; | ||
596 | |||
597 | rtnl_lock(); | ||
598 | dev = __dev_getfirstbyhwtype(type); | ||
599 | if (dev) | ||
600 | dev_hold(dev); | ||
590 | rtnl_unlock(); | 601 | rtnl_unlock(); |
591 | return dev; | 602 | return dev; |
592 | } | 603 | } |