Module Name: src Committed By: maxv Date: Thu Mar 22 21:19:28 UTC 2018
Modified Files: src/sys/netinet: tcp_input.c Log Message: Don't pass a pointer to tcp_reass, otherwise it looks like it can modify tlen while it doesn't. To generate a diff of this commit: cvs rdiff -u -r1.385 -r1.386 src/sys/netinet/tcp_input.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet/tcp_input.c diff -u src/sys/netinet/tcp_input.c:1.385 src/sys/netinet/tcp_input.c:1.386 --- src/sys/netinet/tcp_input.c:1.385 Thu Mar 22 21:10:17 2018 +++ src/sys/netinet/tcp_input.c Thu Mar 22 21:19:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: tcp_input.c,v 1.385 2018/03/22 21:10:17 maxv Exp $ */ +/* $NetBSD: tcp_input.c,v 1.386 2018/03/22 21:19:28 maxv Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -148,7 +148,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.385 2018/03/22 21:10:17 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.386 2018/03/22 21:19:28 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -390,7 +390,7 @@ extern struct evcnt tcp_reass_fragdup; #endif /* TCP_REASS_COUNTERS */ static int tcp_reass(struct tcpcb *, const struct tcphdr *, struct mbuf *, - int *); + int); static int tcp_dooptions(struct tcpcb *, const u_char *, int, struct tcphdr *, struct mbuf *, int, struct tcp_opt_info *); @@ -441,7 +441,7 @@ tcpipqent_free(struct ipqent *ipqe) } static int -tcp_reass(struct tcpcb *tp, const struct tcphdr *th, struct mbuf *m, int *tlen) +tcp_reass(struct tcpcb *tp, const struct tcphdr *th, struct mbuf *m, int tlen) { struct ipqent *p, *q, *nq, *tiqe = NULL; struct socket *so = NULL; @@ -473,13 +473,13 @@ tcp_reass(struct tcpcb *tp, const struct m_claimm(m, &tcp_reass_mowner); - rcvoobyte = *tlen; + rcvoobyte = tlen; /* * Copy these to local variables because the tcpiphdr * gets munged while we are collapsing mbufs. */ pkt_seq = th->th_seq; - pkt_len = *tlen; + pkt_len = tlen; pkt_flags = th->th_flags; TCP_REASS_COUNTER_INCR(&tcp_reass_); @@ -2183,7 +2183,7 @@ after_listen: tp->rcv_scale = tp->request_r_scale; } TCP_REASS_LOCK(tp); - (void) tcp_reass(tp, NULL, NULL, &tlen); + (void)tcp_reass(tp, NULL, NULL, tlen); /* * if we didn't have to retransmit the SYN, * use its rtt as our initial srtt & rtt var. @@ -2511,7 +2511,7 @@ after_listen: tp->rcv_scale = tp->request_r_scale; } TCP_REASS_LOCK(tp); - (void) tcp_reass(tp, NULL, NULL, &tlen); + (void)tcp_reass(tp, NULL, NULL, tlen); tp->snd_wl1 = th->th_seq - 1; /* fall into ... */ @@ -2847,7 +2847,7 @@ dodata: /* XXX */ sorwakeup(so); } else { m_adj(m, hdroptlen); - tiflags = tcp_reass(tp, th, m, &tlen); + tiflags = tcp_reass(tp, th, m, tlen); tp->t_flags |= TF_ACKNOW; }