git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
netdev: Make netdev_from_name() take a reference to its returned netdev.
[sliver-openvswitch.git]
/
lib
/
netdev.c
diff --git
a/lib/netdev.c
b/lib/netdev.c
index
2561538
..
30c44a2
100644
(file)
--- a/
lib/netdev.c
+++ b/
lib/netdev.c
@@
-1386,11
+1386,18
@@
netdev_get_class(const struct netdev *netdev)
/* Returns the netdev with 'name' or NULL if there is none.
*
/* Returns the netdev with 'name' or NULL if there is none.
*
- * The caller must
not free the returned value
. */
+ * The caller must
free the returned netdev with netdev_close()
. */
struct netdev *
netdev_from_name(const char *name)
{
struct netdev *
netdev_from_name(const char *name)
{
- return shash_find_data(&netdev_shash, name);
+ struct netdev *netdev;
+
+ netdev = shash_find_data(&netdev_shash, name);
+ if (netdev) {
+ netdev_ref(netdev);
+ }
+
+ return netdev;
}
/* Fills 'device_list' with devices that match 'netdev_class'.
}
/* Fills 'device_list' with devices that match 'netdev_class'.
@@
-1415,8
+1422,10
@@
netdev_get_devices(const struct netdev_class *netdev_class,
const char *
netdev_get_type_from_name(const char *name)
{
const char *
netdev_get_type_from_name(const char *name)
{
- const struct netdev *dev = netdev_from_name(name);
- return dev ? netdev_get_type(dev) : NULL;
+ struct netdev *dev = netdev_from_name(name);
+ const char *type = dev ? netdev_get_type(dev) : NULL;
+ netdev_close(dev);
+ return type;
}
\f
void
}
\f
void