Page MenuHomeFreeBSD

D23945.id69126.diff
No OneTemporary

D23945.id69126.diff

Index: sys/net/iflib.c
===================================================================
--- sys/net/iflib.c
+++ sys/net/iflib.c
@@ -2548,7 +2548,8 @@
MPASS(fl->ifl_cidx == cidx);
bus_dmamap_sync(fl->ifl_buf_tag, map, BUS_DMASYNC_POSTREAD);
- if (rxq->pfil != NULL && PFIL_HOOKED_IN(rxq->pfil) && pf_rv != NULL) {
+ if (rxq->pfil != NULL && PFIL_HOOKED_IN(rxq->pfil) && pf_rv != NULL &&
+ irf->irf_len != 0) {
payload = *sd->ifsd_cl;
payload += ri->iri_pad;
len = ri->iri_len - ri->iri_pad;
@@ -2585,7 +2586,7 @@
*pf_rv = PFIL_PASS;
}
- if (unload)
+ if (unload && irf->irf_len != 0)
bus_dmamap_unload(fl->ifl_buf_tag, map);
fl->ifl_cidx = (fl->ifl_cidx + 1) & (fl->ifl_size-1);
if (__predict_false(fl->ifl_cidx == 0))
@@ -2670,9 +2671,12 @@
/* should I merge this back in now that the two paths are basically duplicated? */
if (ri->iri_nfrags == 1 &&
+ ri->iri_frags[0].irf_len != 0 &&
ri->iri_frags[0].irf_len <= MIN(IFLIB_RX_COPY_THRESH, MHLEN)) {
m = rxd_frag_to_sd(rxq, &ri->iri_frags[0], false, &sd,
&pf_rv, ri);
+ if (m == NULL)
+ return (NULL);
if (pf_rv != PFIL_PASS && pf_rv != PFIL_REALLOCED)
return (m);
if (pf_rv == PFIL_PASS) {
@@ -2686,6 +2690,8 @@
}
} else {
m = assemble_segments(rxq, ri, &sd, &pf_rv);
+ if (m == NULL)
+ return (NULL);
if (pf_rv != PFIL_PASS && pf_rv != PFIL_REALLOCED)
return (m);
}

File Metadata

Mime Type
text/plain
Expires
Sun, Jul 26, 6:00 AM (12 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35516412
Default Alt Text
D23945.id69126.diff (1 KB)

Event Timeline