Date: Wed, 10 Feb 2010 13:48:34 +0000 (UTC) From: Randall Stewart <rrs@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r203754 - head/sys/mips/rmi/dev/xlr Message-ID: <201002101348.o1ADmYHx006253@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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");
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002101348.o1ADmYHx006253>