From d0fae855ef99e427c99938ff33a4cf236ed8a645 Mon Sep 17 00:00:00 2001 From: Marius Strobl Date: Mon, 15 Nov 2010 21:41:45 +0000 Subject: [PATCH] Return from mii_attach() after calling bus_generic_attach(9) on the device_t of the MAC driver in order to attach miibus(4) on the first pass instead of falling through to also calling it on the device_t of miibus(4). The latter code flow was intended to attach the PHY drivers the same way regardless of whether it's the first or a repeated pass, modulo the bus_generic_attach() call in miibus_attach() which shouldn't be there. However, it turned out that these variants cause miibus(4) to be attached twice under certain conditions when using MAC drivers as modules. Submitted by: yongari MFC after: 3 days --- sys/dev/mii/mii.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/dev/mii/mii.c b/sys/dev/mii/mii.c index 79378f5e203..3df5dfa6c9e 100644 --- a/sys/dev/mii/mii.c +++ b/sys/dev/mii/mii.c @@ -438,6 +438,9 @@ mii_attach(device_t dev, device_t *miibus, struct ifnet *ifp, rv = bus_generic_attach(dev); if (rv != 0) goto fail; + + /* Attaching of the PHY drivers is done in miibus_attach(). */ + return (0); } rv = bus_generic_attach(*miibus); if (rv != 0)