DF-1614 / fix.diff
diff --git a/sys/dev/netif/sln/if_sln.c b/sys/dev/netif/sln/if_sln.c --- a/sys/dev/netif/sln/if_sln.c +++ b/sys/dev/netif/sln/if_sln.c @@ -901,11 +901,13 @@ if_printf(ifp, "\n"); #endif /* No errors; receive the packet. */ - if (rx_bufpos == (sc->sln_bufdata.sln_rx_buf + SL_RX_BUFLEN)) + if (rx_bufpos >= (sc->sln_bufdata.sln_rx_buf + SL_RX_BUFLEN)) rx_bufpos = sc->sln_bufdata.sln_rx_buf; rx_bufpos = rx_bufpos + 4; /* 4 bytes for receive frame * header */ + if (rx_bufpos >= (sc->sln_bufdata.sln_rx_buf + SL_RX_BUFLEN)) + rx_bufpos = sc->sln_bufdata.sln_rx_buf; rx_space = (u_long)((sc->sln_bufdata.sln_rx_buf + SL_RX_BUFLEN) - rx_bufpos); if (pkt_size > rx_space) { |