Page MenuHomeFreeBSD

D7074.id.diff
No OneTemporary

D7074.id.diff

Index: sys/netinet/tcp_output.c
===================================================================
--- sys/netinet/tcp_output.c
+++ sys/netinet/tcp_output.c
@@ -185,7 +185,7 @@
tcp_output(struct tcpcb *tp)
{
struct socket *so = tp->t_inpcb->inp_socket;
- long len;
+ int32_t len;
uint32_t recwin, sendwin;
int off, flags, error = 0; /* Keep compiler happy */
struct mbuf *m;
@@ -278,11 +278,10 @@
p = NULL;
if ((tp->t_flags & TF_SACK_PERMIT) && IN_FASTRECOVERY(tp->t_flags) &&
(p = tcp_sack_output(tp, &sack_bytes_rxmt))) {
- long cwin;
+ uint32_t cwin;
- cwin = min(tp->snd_wnd, tp->snd_cwnd) - sack_bytes_rxmt;
- if (cwin < 0)
- cwin = 0;
+ cwin =
+ imax(min(tp->snd_wnd, tp->snd_cwnd) - sack_bytes_rxmt, 0);
/* Do not retransmit SACK segments beyond snd_recover */
if (SEQ_GT(p->end, tp->snd_recover)) {
/*
@@ -301,10 +300,10 @@
goto after_sack_rexmit;
} else
/* Can rexmit part of the current hole */
- len = ((long)ulmin(cwin,
+ len = ((int32_t)ulmin(cwin,
tp->snd_recover - p->rxmit));
} else
- len = ((long)ulmin(cwin, p->end - p->rxmit));
+ len = ((int32_t)ulmin(cwin, p->end - p->rxmit));
off = p->rxmit - tp->snd_una;
KASSERT(off >= 0,("%s: sack block to the left of una : %d",
__func__, off));
@@ -377,17 +376,17 @@
*/
if (sack_rxmit == 0) {
if (sack_bytes_rxmt == 0)
- len = ((long)ulmin(sbavail(&so->so_snd), sendwin) -
+ len = ((int32_t)ulmin(sbavail(&so->so_snd), sendwin) -
off);
else {
- long cwin;
+ int32_t cwin;
/*
* We are inside of a SACK recovery episode and are
* sending new data, having retransmitted all the
* data possible in the scoreboard.
*/
- len = ((long)min(sbavail(&so->so_snd), tp->snd_wnd) -
+ len = ((int32_t)min(sbavail(&so->so_snd), tp->snd_wnd) -
off);
/*
* Don't remove this (len > 0) check !
@@ -403,7 +402,7 @@
sack_bytes_rxmt;
if (cwin < 0)
cwin = 0;
- len = lmin(len, cwin);
+ len = imin(len, cwin);
}
}
}
@@ -594,7 +593,7 @@
*/
if (!(tp->t_flags & TF_MORETOCOME) && /* normal case */
(idle || (tp->t_flags & TF_NODELAY)) &&
- len + off >= sbavail(&so->so_snd) &&
+ (uint32_t)len + (uint32_t)off >= sbavail(&so->so_snd) &&
(tp->t_flags & TF_NOPUSH) == 0) {
goto send;
}
@@ -951,7 +950,8 @@
* emptied:
*/
max_len = (tp->t_maxseg - optlen);
- if ((off + len) < sbavail(&so->so_snd)) {
+ if (((uint32_t)off + (uint32_t)len) <
+ sbavail(&so->so_snd)) {
moff = len % max_len;
if (moff != 0) {
len -= moff;
@@ -1047,11 +1047,11 @@
mb = sbsndptr(&so->so_snd, off, len, &moff);
if (len <= MHLEN - hdrlen - max_linkhdr) {
- m_copydata(mb, moff, (int)len,
+ m_copydata(mb, moff, len,
mtod(m, caddr_t) + hdrlen);
m->m_len += len;
} else {
- m->m_next = m_copy(mb, moff, (int)len);
+ m->m_next = m_copy(mb, moff, len);
if (m->m_next == NULL) {
SOCKBUF_UNLOCK(&so->so_snd);
(void) m_free(m);
@@ -1067,7 +1067,8 @@
* give data to the user when a buffer fills or
* a PUSH comes in.)
*/
- if ((off + len == sbused(&so->so_snd)) && !(flags & TH_SYN))
+ if (((uint32_t)off + (uint32_t)len == sbused(&so->so_snd)) &&
+ !(flags & TH_SYN))
flags |= TH_PUSH;
SOCKBUF_UNLOCK(&so->so_snd);
} else {
@@ -1296,11 +1297,12 @@
#ifdef IPSEC
KASSERT(len + hdrlen + ipoptlen - ipsec_optlen == m_length(m, NULL),
- ("%s: mbuf chain shorter than expected: %ld + %u + %u - %u != %u",
- __func__, len, hdrlen, ipoptlen, ipsec_optlen, m_length(m, NULL)));
+ ("%s: mbuf chain shorter than expected: %d + %u + %u - %u != %u",
+ __func__, len, hdrlen, ipoptlen, ipsec_optlen,
+ m_length(m, NULL)));
#else
KASSERT(len + hdrlen + ipoptlen == m_length(m, NULL),
- ("%s: mbuf chain shorter than expected: %ld + %u + %u != %u",
+ ("%s: mbuf chain shorter than expected: %d + %u + %u != %u",
__func__, len, hdrlen, ipoptlen, m_length(m, NULL)));
#endif

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 10, 6:53 PM (6 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31239792
Default Alt Text
D7074.id.diff (3 KB)

Event Timeline