tcp: Stringent TSO segment length assertion.
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 16 Aug 2012 02:31:31 +0000 (10:31 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 16 Aug 2012 02:32:02 +0000 (10:32 +0800)
sys/netinet/tcp_output.c

index d3d6a0f..a99cbbd 100644 (file)
@@ -771,7 +771,8 @@ send:
 #endif
 
        if (use_tso) {
 #endif
 
        if (use_tso) {
-               KASSERT(len > segsz,
+               /* TSO segment length must be multiple of segment size */
+               KASSERT(len >= (2 * segsz) && (len % segsz == 0),
                    ("invalid TSO len %ld, segsz %u", len, segsz));
        } else {
                KASSERT(len <= segsz,
                    ("invalid TSO len %ld, segsz %u", len, segsz));
        } else {
                KASSERT(len <= segsz,