DragonFlyBSD Kernel Audit
DF-0359 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/net/netmap/netmap.c b/sys/net/netmap/netmap.c
--- a/sys/net/netmap/netmap.c
+++ b/sys/net/netmap/netmap.c
@@ -915,6 +915,10 @@
 	}
 	if (j != k) {
 		n = k >= j ? k - j : k + lim - j;
+		if (n > kring->nr_hwavail) {
+			netmap_ring_reinit(kring);
+			goto unlock_out;
+		}
 		kring->nr_hwavail -= n;
 		kring->nr_hwcur = k;
 	}