From 3badacee8c62f420e7519685b3700d5741d67ded Mon Sep 17 00:00:00 2001 From: Ruslan Ermilov Date: Fri, 16 Sep 2005 11:11:51 +0000 Subject: Fix "struct ifnet" leaks when attach() fails in the middle, e.g. when mii_phy_probe() or bus_setup_intr() fails. For drivers that call their detach() in this case, call if_free() there to cover this case too. --- sys/dev/vr/if_vr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sys/dev/vr') diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c index 340aac71fde5..5eabc21dafa1 100644 --- a/sys/dev/vr/if_vr.c +++ b/sys/dev/vr/if_vr.c @@ -769,7 +769,6 @@ vr_attach(dev) if (error) { printf("vr%d: couldn't set up irq\n", unit); ether_ifdetach(ifp); - if_free(ifp); goto fail; } @@ -804,9 +803,10 @@ vr_detach(device_t dev) vr_stop(sc); VR_UNLOCK(sc); /* XXX: Avoid recursive acquire. */ ether_ifdetach(ifp); - if_free(ifp); VR_LOCK(sc); } + if (ifp) + if_free(ifp); if (sc->vr_miibus) device_delete_child(dev, sc->vr_miibus); bus_generic_detach(dev); -- cgit v1.3