diff options
author | yongari <yongari@FreeBSD.org> | 2009-01-14 04:47:04 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2009-01-14 04:47:04 +0000 |
commit | 3df80369887a9c1948ee7b1111de53a76187c513 (patch) | |
tree | c84091b7057b4d4872b243fd793efdfe3402f8f9 /sys | |
parent | 2c6d6348671f327037a23a03bdbc85adea2b83c4 (diff) | |
download | FreeBSD-src-3df80369887a9c1948ee7b1111de53a76187c513.zip FreeBSD-src-3df80369887a9c1948ee7b1111de53a76187c513.tar.gz |
Correct frame length argument of in_cksum_skip. While I'm here
remove intermediate variable csum.
Reported by: Kim Culhan < w8hdkim <> gmail DOT com >
Tested by: Kim Culhan < w8hdkim <> gmail DOT com >
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/msk/if_msk.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c index 2b84cad..7338871 100644 --- a/sys/dev/msk/if_msk.c +++ b/sys/dev/msk/if_msk.c @@ -2608,17 +2608,14 @@ msk_encap(struct msk_if_softc *sc_if, struct mbuf **m_head) */ if (m->m_pkthdr.len < MSK_MIN_FRAMELEN && (m->m_pkthdr.csum_flags & CSUM_TCP) != 0) { - uint16_t csum; - m = m_pullup(m, offset + sizeof(struct tcphdr)); if (m == NULL) { *m_head = NULL; return (ENOBUFS); } - csum = in_cksum_skip(m, ntohs(ip->ip_len) + offset - - (ip->ip_hl << 2), offset); *(uint16_t *)(m->m_data + offset + - m->m_pkthdr.csum_data) = csum; + m->m_pkthdr.csum_data) = in_cksum_skip(m, + m->m_pkthdr.len, offset); m->m_pkthdr.csum_flags &= ~CSUM_TCP; } if ((m->m_pkthdr.csum_flags & CSUM_TSO) != 0) { |