Oh, sorry.
Hope this fix is better.

Quoting Marco Pfatschbacher <[email protected]>:

On Fri, Dec 02, 2011 at 12:02:19PM +0100, Jan Klemkow wrote:
Hello,

i have found an other failed error handling
with interrupt locking. Here is a diff which
should patch this.

i don't think this compiles.
your label is out: and the goto uses err.


bye,
Jan

Index: fxp.c
===================================================================
RCS file: /mount/cvsdev/cvs/openbsd/src/sys/dev/ic/fxp.c,v
retrieving revision 1.108
diff -u -w -p -r1.108 fxp.c
--- fxp.c       7 Apr 2011 15:30:16 -0000       1.108
+++ fxp.c       1 Dec 2011 16:04:35 -0000
@@ -1323,7 +1323,7 @@ fxp_init(void *xsc)
        FXP_CFG_SYNC(sc, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
        if (!(cbp->cb_status & htole16(FXP_CB_STATUS_C))) {
                printf("%s: config command timeout\n", sc->sc_dev.dv_xname);
-               return;
+               goto err;
        }

        /*
@@ -1354,7 +1354,7 @@ fxp_init(void *xsc)
        FXP_IAS_SYNC(sc, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
        if (!(cb_ias->cb_status & htole16(FXP_CB_STATUS_C))) {
                printf("%s: IAS command timeout\n", sc->sc_dev.dv_xname);
-               return;
+               goto err;
        }

        /* Again, this time really upload the multicast addresses */
@@ -1445,6 +1445,10 @@ fxp_init(void *xsc)
         * Start stats updater.
         */
        timeout_add_sec(&sc->stats_update_to, 1);
+
+       return;
+ out:
+       splx(s);
 }

 /*



Index: fxp.c
===================================================================
RCS file: /mount/cvsdev/cvs/openbsd/src/sys/dev/ic/fxp.c,v
retrieving revision 1.108
diff -u -w -p -r1.108 fxp.c
--- fxp.c       7 Apr 2011 15:30:16 -0000       1.108
+++ fxp.c       1 Dec 2011 16:04:35 -0000
@@ -1323,7 +1323,7 @@ fxp_init(void *xsc)
        FXP_CFG_SYNC(sc, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
        if (!(cbp->cb_status & htole16(FXP_CB_STATUS_C))) {
                printf("%s: config command timeout\n", sc->sc_dev.dv_xname);
-               return;
+               goto out;
        }

        /*
@@ -1354,7 +1354,7 @@ fxp_init(void *xsc)
        FXP_IAS_SYNC(sc, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
        if (!(cb_ias->cb_status & htole16(FXP_CB_STATUS_C))) {
                printf("%s: IAS command timeout\n", sc->sc_dev.dv_xname);
-               return;
+               goto out;
        }

        /* Again, this time really upload the multicast addresses */
@@ -1445,6 +1445,10 @@ fxp_init(void *xsc)
         * Start stats updater.
         */
        timeout_add_sec(&sc->stats_update_to, 1);
+
+       return;
+ out:
+       splx(s);
 }

 /*

Reply via email to