Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Sep 2005 17:37:43 +0400
From:      "Yuriy N. Shkandybin" <jura@networks.ru>
To:        <freebsd-stable@freebsd.org>
Subject:   Re: 6BETA5 panic with ifconfig nge
Message-ID:  <007201c5c29f$79cc2de0$6504010a@Jura>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?007201c5c29f$79cc2de0$6504010a>