From owner-freebsd-net@FreeBSD.ORG Mon Nov 29 19:23:16 2010 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE356106564A for ; Mon, 29 Nov 2010 19:23:16 +0000 (UTC) (envelope-from eugen@eg.sd.rdtc.ru) Received: from eg.sd.rdtc.ru (eg.sd.rdtc.ru [62.231.161.221]) by mx1.freebsd.org (Postfix) with ESMTP id 242608FC1F for ; Mon, 29 Nov 2010 19:23:15 +0000 (UTC) Received: from eg.sd.rdtc.ru (localhost [127.0.0.1]) by eg.sd.rdtc.ru (8.14.4/8.14.4) with ESMTP id oATJNCdw033638; Tue, 30 Nov 2010 01:23:12 +0600 (NOVT) (envelope-from eugen@eg.sd.rdtc.ru) Received: (from eugen@localhost) by eg.sd.rdtc.ru (8.14.4/8.14.4/Submit) id oATJNCZV033637; Tue, 30 Nov 2010 01:23:12 +0600 (NOVT) (envelope-from eugen) Date: Tue, 30 Nov 2010 01:23:12 +0600 From: Eugene Grosbein To: Jack Vogel Message-ID: <20101129192312.GA33547@rdtc.ru> References: <201011270946271408828@yahoo.com.cn> <20101128081617.GA90332@zibbi.meraka.csir.co.za> <20101129175128.GA32977@rdtc.ru> <20101129182652.GA33150@rdtc.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.3i Cc: freebsd-net , Eugene Grosbein Subject: Re: em(4) updated to version 7.1.8 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Nov 2010 19:23:16 -0000 On Mon, Nov 29, 2010 at 11:10:22AM -0800, Jack Vogel wrote: > Not sure what code you created this from, but its not the new driver, Yes, that's for previous version and that's what keeps my production servers from panicing. > things have been reorganized and I do not believe this issue exists. > Please test with the latest. I'd rather not risk. Here is the same check for today's RELENG_8 driver. Please, please take a look. After several days of nearly gigabit load it has already happened m_head was NULL here, in previous version. Can it be possible in current version? There is still no check before dereferencing. --- if_em.c.orig 2010-11-30 01:16:17.000000000 +0600 +++ if_em.c 2010-11-30 01:19:09.000000000 +0600 @@ -4321,10 +4321,12 @@ /* Reset state, keep loaded DMA map and reuse */ m = rbuf->m_head; + if(m) { m->m_len = m->m_pkthdr.len = adapter->rx_mbuf_sz; m->m_flags |= M_PKTHDR; m->m_data = m->m_ext.ext_buf; m->m_next = NULL; + } return; }