DF-1207 / fix.diff
diff --git a/sys/dev/netif/alc/if_alc.c b/sys/dev/netif/alc/if_alc.c --- a/sys/dev/netif/alc/if_alc.c +++ b/sys/dev/netif/alc/if_alc.c @@ -1360,7 +1360,7 @@ sc->alc_res_rid = PCIR_BAR(0); sc->alc_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->alc_res_rid, RF_ACTIVE); - if (error != 0) { + if (sc->alc_res == NULL) { device_printf(dev, "cannot allocate memory resources.\n"); goto fail; } @@ -3301,7 +3301,9 @@ ifp = sc->alc_ifp; status = le32toh(rrd->status); rdinfo = le32toh(rrd->rdinfo); - rx_cons = RRD_RD_IDX(rdinfo); + rx_cons = RRD_RD_IDX(rdinfo); + if (rx_cons >= ALC_RX_RING_CNT) + return; nsegs = RRD_RD_CNT(rdinfo); sc->alc_cdata.alc_rxlen = RRD_BYTES(status); |