⬢ DragonFlyBSD Kernel Audit
DF-5077 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/mii_layer/mii.c	2026-09-25 18:16:01.683350318 +0000
+++ b/sys/dev/netif/mii_layer/mii.c	2026-09-25 18:16:05.835295996 +0000
@@ -241,6 +241,19 @@
 		if (media == (IFM_ETHER|IFM_AUTO))
 			break;
 	}
+	/*
+	 * DF-5001: PHY drivers whose BMSR/EXTSR report no media capability
+	 * add no media at all ("no media present" branch: atphy, ciphy,
+	 * jmphy, truephy, ukphy, ...).  If neither they nor the parent added
+	 * anything, the list is empty, `media' is still 0, and
+	 * ifmedia_set() would panic("ifmedia_set") on the no-match
+	 * (sys/net/if_media.c).  Always provide an autoselect default so the
+	 * bus attaches (degraded) instead of taking the system down.
+	 */
+	if (m == NULL && LIST_EMPTY(&mii->mii_media.ifm_list)) {
+		ifmedia_add(&mii->mii_media, IFM_ETHER|IFM_AUTO, 0, NULL);
+		media = IFM_ETHER|IFM_AUTO;
+	}
 	ifmedia_set(&mii->mii_media, media);
 }