⬢ DragonFlyBSD Kernel Audit
DF-4930 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/mii_layer/atphy.c
+++ b/sys/dev/netif/mii_layer/atphy.c
@@ -136,12 +136,11 @@ atphy_attach(device_t dev)
 	sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR);
 
 	device_printf(dev, " ");
+
+	/* Always add media: mii_phy_add_media() installs the IFM_NONE
+	 * fallback entry even for a PHY reporting no capabilities, which
+	 * keeps miibus_mediainit()'s ifmedia_set() (mii.c) and the
+	 * ifm_cur dereferences in atphy_service() safe. */
 	if ((sc->mii_capabilities & BMSR_MEDIAMASK) == 0 &&
 	    (sc->mii_extcapabilities & EXTSR_MEDIAMASK) == 0)
 		kprintf("no media present");
-	else
-		mii_phy_add_media(sc);
+	mii_phy_add_media(sc);
 	kprintf("\n");
 
 	atphy_reset(sc);