⬢ DragonFlyBSD Kernel Audit
DF-4957 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/mii_layer/ciphy.c	2026-09-25 10:49:30.436655106 +0000
+++ b/sys/dev/netif/mii_layer/ciphy.c	2026-09-25 10:49:30.448654949 +0000
@@ -140,9 +140,20 @@
 
 	device_printf(dev, " ");
 	if ((sc->mii_capabilities & BMSR_MEDIAMASK) == 0 &&
-	    (sc->mii_extcapabilities & EXTSR_MEDIAMASK) == 0)
+	    (sc->mii_extcapabilities & EXTSR_MEDIAMASK) == 0) {
 		kprintf("no media present");
-	else
+		/*
+		 * Add an explicit fallback media entry so that
+		 * miibus_mediainit()'s ifmedia_set() finds a match
+		 * instead of panicking ("ifmedia_set: no match").
+		 * mii_phy_add_media()'s own IFM_NONE fallback cannot be
+		 * used here: it is gated on MIIF_NOISOLATE being clear
+		 * (mii_physubr.c) and ciphy always sets MIIF_NOISOLATE.
+		 */
+		ifmedia_add(&mii->mii_media,
+		    IFM_MAKEWORD(IFM_ETHER, IFM_NONE, 0, sc->mii_inst),
+		    MII_MEDIA_NONE, NULL);
+	} else
 		mii_phy_add_media(sc);
 	kprintf("\n");