diff options
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/awi/awi.c | 2 | ||||
-rw-r--r-- | sys/dev/awi/awi_wep.c | 2 | ||||
-rw-r--r-- | sys/dev/en/midway.c | 2 | ||||
-rw-r--r-- | sys/dev/hifn/hifn7751.c | 7 | ||||
-rw-r--r-- | sys/dev/ubsec/ubsec.c | 6 |
5 files changed, 11 insertions, 8 deletions
diff --git a/sys/dev/awi/awi.c b/sys/dev/awi/awi.c index 3718198..e77fae6 100644 --- a/sys/dev/awi/awi.c +++ b/sys/dev/awi/awi.c @@ -1326,7 +1326,7 @@ awi_fix_rxhdr(sc, m0) m_freem(m0); return NULL; } - M_COPY_PKTHDR(n, m0); + M_MOVE_PKTHDR(n, m0); n->m_len = MHLEN; } else { MGET(n, M_DONTWAIT, MT_DATA); diff --git a/sys/dev/awi/awi_wep.c b/sys/dev/awi/awi_wep.c index b24bd9f..ecaf548 100644 --- a/sys/dev/awi/awi_wep.c +++ b/sys/dev/awi/awi_wep.c @@ -323,7 +323,7 @@ awi_wep_encrypt(sc, m0, txflag) n0 = n; if (n == NULL) goto fail; - M_COPY_PKTHDR(n, m); + M_MOVE_PKTHDR(n, m); len = IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN; if (txflag) { n->m_pkthdr.len += len; diff --git a/sys/dev/en/midway.c b/sys/dev/en/midway.c index 915fd14..ffcc6c9 100644 --- a/sys/dev/en/midway.c +++ b/sys/dev/en/midway.c @@ -1843,7 +1843,7 @@ STATIC int en_makeexclusive(sc, mm, prev) return(0); } if (m->m_flags & M_PKTHDR) - M_COPY_PKTHDR(new, m); + M_MOVE_PKTHDR(new, m); MCLGET(new, M_DONTWAIT); if ((new->m_flags & M_EXT) == 0) { m_free(new); diff --git a/sys/dev/hifn/hifn7751.c b/sys/dev/hifn/hifn7751.c index ea87bd6..accb531 100644 --- a/sys/dev/hifn/hifn7751.c +++ b/sys/dev/hifn/hifn7751.c @@ -1668,6 +1668,10 @@ hifn_crypto( if (cmd->src_m->m_flags & M_PKTHDR) { len = MHLEN; MGETHDR(m0, M_DONTWAIT, MT_DATA); + if (m0 && !m_dup_pkthdr(m0, cmd->src_m, M_DONTWAIT)) { + m_free(m0); + m0 = NULL; + } } else { len = MLEN; MGET(m0, M_DONTWAIT, MT_DATA); @@ -1677,9 +1681,6 @@ hifn_crypto( err = dma->cmdu ? ERESTART : ENOMEM; goto err_srcmap; } - if (len == MHLEN) { - M_COPY_PKTHDR(m0, cmd->src_m); - } if (totlen >= MINCLSIZE) { MCLGET(m0, M_DONTWAIT); if ((m0->m_flags & M_EXT) == 0) { diff --git a/sys/dev/ubsec/ubsec.c b/sys/dev/ubsec/ubsec.c index 37cb37e..b62a425 100644 --- a/sys/dev/ubsec/ubsec.c +++ b/sys/dev/ubsec/ubsec.c @@ -1269,6 +1269,10 @@ ubsec_process(void *arg, struct cryptop *crp, int hint) if (q->q_src_m->m_flags & M_PKTHDR) { len = MHLEN; MGETHDR(m, M_DONTWAIT, MT_DATA); + if (m && !m_dup_pkthdr(m, q->q_src_m, M_DONTWAIT)) { + m_free(m); + m = NULL; + } } else { len = MLEN; MGET(m, M_DONTWAIT, MT_DATA); @@ -1278,8 +1282,6 @@ ubsec_process(void *arg, struct cryptop *crp, int hint) err = sc->sc_nqueue ? ERESTART : ENOMEM; goto errout; } - if (len == MHLEN) - M_COPY_PKTHDR(m, q->q_src_m); if (totlen >= MINCLSIZE) { MCLGET(m, M_DONTWAIT); if ((m->m_flags & M_EXT) == 0) { |