svn commit: r201654 - stable/7/sys/netinet

Bjoern A. Zeeb bz at
Wed Jan 6 16:49:00 UTC 2010

Author: bz
Date: Wed Jan  6 16:48:59 2010
New Revision: 201654

  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.

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));
+	}
 	/* Check the interface for TSO capabilities. */
 	if (mtuflags & CSUM_TSO)

More information about the svn-src-stable-7 mailing list