svn commit: r201654 - stable/7/sys/netinet
Bjoern A. Zeeb
bz at FreeBSD.org
Wed Jan 6 16:49:00 UTC 2010
Author: bz
Date: Wed Jan 6 16:48:59 2010
New Revision: 201654
URL: http://svn.freebsd.org/changeset/base/201654
Log:
MFC r184720:
Fix a bug introduced with r182851 (r201653 in stable/7) splitting
tcp_mss() into tcp_mss() and tcp_mss_update() so that tcp_mtudisc()
could re-use the same code.
In case we return early and got a metricptr to pass the hostcache
info back to the caller we need to initialize the data to a defined
state (zero it) as tcp_hc_get() would do if there was no hit.
Without that the caller would check on random stack garbage which
could lead to undefined results.
This only affected tcp_mss() if there was no routing entry for the peer,
tcp_mtudisc() was not affected.
Modified:
stable/7/sys/netinet/tcp_input.c
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/netinet/tcp_input.c
==============================================================================
--- stable/7/sys/netinet/tcp_input.c Wed Jan 6 16:43:09 2010 (r201653)
+++ stable/7/sys/netinet/tcp_input.c Wed Jan 6 16:48:59 2010 (r201654)
@@ -2761,8 +2761,16 @@ tcp_mss_update(struct tcpcb *tp, int off
/*
* No route to sender, stay with default mss and return.
*/
- if (maxmtu == 0)
+ if (maxmtu == 0) {
+ /*
+ * In case we return early we need to intialize metrics
+ * to a defined state as tcp_hc_get() would do for us
+ * if there was no cache hit.
+ */
+ if (metricptr != NULL)
+ bzero(metricptr, sizeof(struct hc_metrics_lite));
return;
+ }
/* Check the interface for TSO capabilities. */
if (mtuflags & CSUM_TSO)
More information about the svn-src-stable
mailing list