summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_output.c
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2008-09-07 11:38:30 +0000
committerbz <bz@FreeBSD.org>2008-09-07 11:38:30 +0000
commitfffe39bcea71473bf99577f1936bf93939e79e24 (patch)
treead7e9647fa2a698d33e67787008eed1c03cb33e7 /sys/netinet/tcp_output.c
parent5d3f53e84925fd84075c5fdf8ac8fdce89b13a94 (diff)
downloadFreeBSD-src-fffe39bcea71473bf99577f1936bf93939e79e24.zip
FreeBSD-src-fffe39bcea71473bf99577f1936bf93939e79e24.tar.gz
Add a second KASSERT checking for len >= 0 in the tcp output path.
This is different to the first one (as len gets updated between those two) and would have caught various edge cases (read bugs) at a well defined place I had been debugging the last months instead of triggering (random) panics further down the call graph. MFC after: 2 months
Diffstat (limited to 'sys/netinet/tcp_output.c')
-rw-r--r--sys/netinet/tcp_output.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index 1e6e53e..75f3038 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -392,7 +392,7 @@ after_sack_rexmit:
}
/* len will be >= 0 after this point. */
- KASSERT(len >= 0, ("%s: len < 0", __func__));
+ KASSERT(len >= 0, ("[%s:%d]: len < 0", __func__, __LINE__));
/*
* Automatic sizing of send socket buffer. Often the send buffer
@@ -746,6 +746,12 @@ send:
/*#endif*/
/*
+ * This KASSERT is here to catch edge cases at a well defined place.
+ * Before, those had triggered (random) panic conditions further down.
+ */
+ KASSERT(len >= 0, ("[%s:%d]: len < 0", __func__, __LINE__));
+
+ /*
* Grab a header mbuf, attaching a copy of data to
* be transmitted, and initialize the header from
* the template for sends on this connection.
OpenPOWER on IntegriCloud