Do not double free the memory in if_clone.

if_clone_attach function will drop the reference on failure  which will
free the if_clone structure. No need to do it second time.

Reviewed by: glebius, ae
Differential Revision: https://reviews.freebsd.org/D10386
This commit is contained in:
Alexander Kabaev 2017-12-23 16:23:58 +00:00
parent cd04523f0e
commit 3395dd6eb8

View File

@ -387,10 +387,8 @@ if_clone_advanced(const char *name, u_int maxunit, ifc_match_t match,
ifc->ifc_create = create;
ifc->ifc_destroy = destroy;
if (if_clone_attach(ifc) != 0) {
if_clone_free(ifc);
if (if_clone_attach(ifc) != 0)
return (NULL);
}
EVENTHANDLER_INVOKE(if_clone_event, ifc);
@ -410,10 +408,8 @@ if_clone_simple(const char *name, ifcs_create_t create, ifcs_destroy_t destroy,
ifc->ifcs_destroy = destroy;
ifc->ifcs_minifs = minifs;
if (if_clone_attach(ifc) != 0) {
if_clone_free(ifc);
if (if_clone_attach(ifc) != 0)
return (NULL);
}
for (unit = 0; unit < minifs; unit++) {
char name[IFNAMSIZ];