From owner-freebsd-stable@FreeBSD.ORG Mon Sep 26 13:39:52 2005 Return-Path: X-Original-To: freebsd-stable@freebsd.org Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1B58816A41F for ; Mon, 26 Sep 2005 13:39:52 +0000 (GMT) (envelope-from jura@networks.ru) Received: from networks.ru (orange.networks.ru [80.249.138.5]) by mx1.FreeBSD.org (Postfix) with ESMTP id 62EAE43D53 for ; Mon, 26 Sep 2005 13:39:48 +0000 (GMT) (envelope-from jura@networks.ru) Received: from [81.195.67.217] (account jura HELO Jura) by networks.ru (CommuniGate Pro SMTP 4.2.8) with ESMTP-TLS id 1911326 for freebsd-stable@freebsd.org; Mon, 26 Sep 2005 17:39:46 +0400 Message-ID: <007201c5c29f$79cc2de0$6504010a@Jura> From: "Yuriy N. Shkandybin" To: Date: Mon, 26 Sep 2005 17:37:43 +0400 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2670 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Re: 6BETA5 panic with ifconfig nge X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Sep 2005 13:39:52 -0000 Patch below fixes my panics: Main is: sc->nge_ldata =3D contigmalloc(sizeof(struct nge_list_data), = M_DEVBUF, - M_NOWAIT, 0, 0xffffffff, PAGE_SIZE, 0); + M_NOWAIT|M_ZERO, 0, 0xffffffff, PAGE_SIZE, 0); Other is incorporated rev. 1.78-1.79 of if_nge.c from HEAD. Jura --- if_nge.c.orig Mon Sep 26 17:02:00 2005 +++ if_nge.c.my Mon Sep 26 16:59:26 2005 @@ -839,7 +839,7 @@ /* XXX: leaked on error */ sc->nge_ldata =3D contigmalloc(sizeof(struct nge_list_data), = M_DEVBUF, - M_NOWAIT, 0, 0xffffffff, PAGE_SIZE, 0); + M_NOWAIT|M_ZERO, 0, 0xffffffff, PAGE_SIZE, 0); if (sc->nge_ldata =3D=3D NULL) { printf("nge%d: no memory for list buffers!\n", unit); @@ -912,6 +912,7 @@ } else { printf("nge%d: MII without any PHY!\n", = sc->nge_unit); + if_free(ifp); bus_release_resource(dev, SYS_RES_IRQ, 0, = sc->nge_irq); bus_release_resource(dev, NGE_RES, NGE_RID, sc->nge_res); @@ -933,6 +934,7 @@ nge_intr, sc, &sc->nge_intrhand); if (error) { /* XXX: resource leaks */ + if_free(ifp); bus_release_resource(dev, SYS_RES_IRQ, 0, sc->nge_irq); bus_release_resource(dev, NGE_RES, NGE_RID, = sc->nge_res); printf("nge%d: couldn't set up irq\n", unit); @@ -960,7 +962,6 @@ nge_stop(sc); NGE_UNLOCK(sc); ether_ifdetach(ifp); - if_free(ifp); bus_generic_detach(dev); if (!sc->nge_tbi) { @@ -971,6 +972,7 @@ bus_release_resource(dev, NGE_RES, NGE_RID, sc->nge_res); contigfree(sc->nge_ldata, sizeof(struct nge_list_data), = M_DEVBUF); + if_free(ifp); NGE_LOCK_DESTROY(sc);