--- a/driver/nvram_stub.c +++ b/driver/nvram_stub.c @@ -22,6 +22,7 @@ typedef struct _vars { #define VARS_T_OH sizeof(vars_t) static vars_t *vars = NULL; +static int nvram_init_done = 0; extern char *nvram_buf[]; int @@ -33,6 +34,10 @@ BCMATTACHFN(nvram_init)(void *si) uint nvs, bufsz; vars_t *new; + nvram_init_done++; + if (nvram_init_done != 1) + return 0; + osh = si_osh(sih); nvs = R_REG(osh, &nvh->len) - sizeof(struct nvram_header); @@ -79,6 +84,10 @@ BCMATTACHFN(nvram_exit)(void *si) vars_t *this, *next; si_t *sih; + nvram_init_done--; + if (nvram_init_done != 0) + return 0; + sih = (si_t *)si; this = vars; while (this) {