⬢ DragonFlyBSD Kernel Audit
DF-3842 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/iwi/if_iwi.c
+++ b/sys/dev/netif/iwi/if_iwi.c
@@ -1636,7 +1636,7 @@
 	struct iwi_hdr *hdr;
 	uint32_t hw;
 
-	hw = CSR_READ_4(sc, IWI_CSR_RX_RIDX);
+	hw = CSR_READ_4(sc, IWI_CSR_RX_RIDX) % IWI_RX_RING_COUNT;
 
 	for (; sc->rxq.cur != hw;) {
 		data = &sc->rxq.data[sc->rxq.cur];
@@ -1678,7 +1678,7 @@
 	struct iwi_tx_data *data;
 	uint32_t hw;
 
-	hw = CSR_READ_4(sc, txq->csr_ridx);
+	hw = CSR_READ_4(sc, txq->csr_ridx) % IWI_TX_RING_COUNT;
 
 	while (txq->next != hw) {
 		data = &txq->data[txq->next];