⬢ DragonFlyBSD Kernel Audit
DF-3966 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/ral/rt2661.c	2026-09-17 06:16:59.148778118 +0000
+++ b/sys/dev/netif/ral/rt2661.c	2026-09-17 06:16:59.148778118 +0000
@@ -1100,6 +1100,12 @@ rt2661_rx_intr(struct rt2661_softc *sc)
 		/* finalize mbuf */
 		m->m_pkthdr.len = m->m_len =
 		    (le32toh(desc->flags) >> 16) & 0xfff;
+		if (m->m_pkthdr.len > MCLBYTES) {
+			/* device-fed 12-bit length vs 2KB cluster */
+			DPRINTFN(sc, 1, "rx frame too large (%d)\n",
+			    m->m_pkthdr.len);
+			m->m_pkthdr.len = m->m_len = MCLBYTES;
+		}
 
 		rssi = rt2661_get_rssi(sc, desc->rssi);
 		/* Error happened during RSSI conversion. */