From owner-svn-src-head@FreeBSD.ORG Wed Feb 10 13:48:34 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F406106566C; Wed, 10 Feb 2010 13:48:34 +0000 (UTC) (envelope-from rrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8EACF8FC08; Wed, 10 Feb 2010 13:48:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o1ADmYE6006255; Wed, 10 Feb 2010 13:48:34 GMT (envelope-from rrs@svn.freebsd.org) Received: (from rrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o1ADmYHx006253; Wed, 10 Feb 2010 13:48:34 GMT (envelope-from rrs@svn.freebsd.org) Message-Id: <201002101348.o1ADmYHx006253@svn.freebsd.org> From: Randall Stewart Date: Wed, 10 Feb 2010 13:48:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203754 - head/sys/mips/rmi/dev/xlr X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Feb 2010 13:48:34 -0000 Author: rrs Date: Wed Feb 10 13:48:34 2010 New Revision: 203754 URL: http://svn.freebsd.org/changeset/base/203754 Log: If a mbuf is split across two pages, we have code that detects this and makes two transmit descriptors. However its possible that the algorithm detects when the second page is not used (when the data aligns perfectly to the bottom of the page). This caused a 0 len descriptor to be added which locks up the rge device. Skip such things with a continue. JC provided this patch... Thanks JC :-) Obtained from: JC (c.jayachandran@gmail.com) Modified: head/sys/mips/rmi/dev/xlr/rge.c Modified: head/sys/mips/rmi/dev/xlr/rge.c ============================================================================== --- head/sys/mips/rmi/dev/xlr/rge.c Wed Feb 10 12:20:08 2010 (r203753) +++ head/sys/mips/rmi/dev/xlr/rge.c Wed Feb 10 13:48:34 2010 (r203754) @@ -577,6 +577,8 @@ build_frag_list(struct mbuf *m_head, str taddr = (vm_offset_t)m->m_data + len1; p2 = vtophys(taddr); len2 = m->m_len - len1; + if (len2 == 0) + continue; if (nfrag >= XLR_MAX_TX_FRAGS) panic("TX frags exceeded");