summaryrefslogtreecommitdiffstats
path: root/sys/dev/ti
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2005-09-16 11:11:51 +0000
committerru <ru@FreeBSD.org>2005-09-16 11:11:51 +0000
commitd2f7ab28daf6bc7f93eb290728f89c7d713ca0ce (patch)
treeeea8401041be885ba31c07333f6e0206b9d04ab0 /sys/dev/ti
parent02dbbd7982679f0c66e9ffa29caf799b5c1a3bde (diff)
downloadFreeBSD-src-d2f7ab28daf6bc7f93eb290728f89c7d713ca0ce.zip
FreeBSD-src-d2f7ab28daf6bc7f93eb290728f89c7d713ca0ce.tar.gz
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.
Diffstat (limited to 'sys/dev/ti')
-rw-r--r--sys/dev/ti/if_ti.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c
index bef01ae..a6126df 100644
--- a/sys/dev/ti/if_ti.c
+++ b/sys/dev/ti/if_ti.c
@@ -2292,7 +2292,6 @@ ti_attach(dev)
if (error) {
printf("ti%d: couldn't set up irq\n", unit);
ether_ifdetach(ifp);
- if_free(ifp);
goto fail;
}
@@ -2328,9 +2327,10 @@ ti_detach(dev)
if (device_is_attached(dev)) {
ti_stop(sc);
ether_ifdetach(ifp);
- if_free(ifp);
bus_generic_detach(dev);
}
+ if (ifp)
+ if_free(ifp);
ifmedia_removeall(&sc->ifmedia);
if (sc->ti_rdata)
OpenPOWER on IntegriCloud