From owner-svn-src-user@FreeBSD.ORG Thu May 21 19:44:05 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 613B2106568D; Thu, 21 May 2009 19:44:05 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4FD718FC18; Thu, 21 May 2009 19:44:05 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4LJi5YF076987; Thu, 21 May 2009 19:44:05 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4LJi5Eh076986; Thu, 21 May 2009 19:44:05 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200905211944.n4LJi5Eh076986@svn.freebsd.org> From: Kip Macy Date: Thu, 21 May 2009 19:44:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192564 - user/kmacy/releng_7_2_fcs/sys/kern X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 May 2009 19:44:05 -0000 Author: kmacy Date: Thu May 21 19:44:05 2009 New Revision: 192564 URL: http://svn.freebsd.org/changeset/base/192564 Log: MFC 192516, adding additional checks to sbsndptr Modified: user/kmacy/releng_7_2_fcs/sys/kern/uipc_sockbuf.c Modified: user/kmacy/releng_7_2_fcs/sys/kern/uipc_sockbuf.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/uipc_sockbuf.c Thu May 21 19:33:46 2009 (r192563) +++ user/kmacy/releng_7_2_fcs/sys/kern/uipc_sockbuf.c Thu May 21 19:44:05 2009 (r192564) @@ -575,10 +575,6 @@ sbappendrecord_locked(struct sockbuf *sb if (m0 == 0) return; - m = sb->sb_mb; - if (m) - while (m->m_nextpkt) - m = m->m_nextpkt; /* * Put the first mbuf on the queue. Note this permits zero length * records. @@ -586,10 +582,7 @@ sbappendrecord_locked(struct sockbuf *sb sballoc(sb, m0); SBLASTRECORDCHK(sb); SBLINKRECORD(sb, m0); - if (m) - m->m_nextpkt = m0; - else - sb->sb_mb = m0; + sb->sb_mbtail = m0; m = m0->m_next; m0->m_next = 0; if (m && (m0->m_flags & M_EOR)) { @@ -935,11 +928,13 @@ sbsndptr(struct sockbuf *sb, u_int off, /* Advance by len to be as close as possible for the next transmit. */ for (off = off - sb->sb_sndptroff + len - 1; - off > 0 && off >= m->m_len; + off > 0 && m != NULL && off >= m->m_len; m = m->m_next) { sb->sb_sndptroff += m->m_len; off -= m->m_len; } + if (off > 0 && m == NULL) + panic("%s: sockbuf %p and mbuf %p clashing", __func__, sb, ret); sb->sb_sndptr = m; return (ret);