aboutsummaryrefslogtreecommitdiff
path: root/sys/net
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2010-04-11 18:47:38 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2010-04-11 18:47:38 +0000
commitd0088cde620a442171ce4b16fd6e161a77ae0feb (patch)
treec28b37e81d00cbf2aef04cb523774b676067bf09 /sys/net
parent37ba5a9b148f1881275914029a255783573c8d23 (diff)
Notes
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/if_clone.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/net/if_clone.c b/sys/net/if_clone.c
index 81ac7ffbdba5..c02737bd4637 100644
--- a/sys/net/if_clone.c
+++ b/sys/net/if_clone.c
@@ -196,10 +196,11 @@ if_clone_createif(struct if_clone *ifc, char *name, size_t len, caddr_t params)
int
if_clone_destroy(const char *name)
{
+ int err;
struct if_clone *ifc;
struct ifnet *ifp;
- ifp = ifunit(name);
+ ifp = ifunit_ref(name);
if (ifp == NULL)
return (ENXIO);
@@ -221,10 +222,14 @@ if_clone_destroy(const char *name)
}
#endif
IF_CLONERS_UNLOCK();
- if (ifc == NULL)
+ if (ifc == NULL) {
+ if_rele(ifp);
return (EINVAL);
+ }
- return (if_clone_destroyif(ifc, ifp));
+ err = if_clone_destroyif(ifc, ifp);
+ if_rele(ifp);
+ return err;
}
/*