DF-0359 / fix.diff
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; } |