DragonFlyBSD Kernel Audit
DF-1158 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/netif/wpi/if_wpi.c b/sys/dev/netif/wpi/if_wpi.c
--- a/sys/dev/netif/wpi/if_wpi.c
+++ b/sys/dev/netif/wpi/if_wpi.c
@@ -2205,7 +2205,7 @@
 	bus_dmamap_sync(sc->shared_dma.tag, sc->shared_dma.map,
 	    BUS_DMASYNC_POSTREAD);
 
-	hw = le32toh(sc->shared->next) & 0xfff;
+	hw = le32toh(sc->shared->next) & (WPI_RX_RING_COUNT - 1);
 	hw = (hw == 0) ? WPI_RX_RING_COUNT - 1 : hw - 1;
 
 	while (sc->rxq.cur != hw) {