| --- 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; |
| + |
| sih = (si_t *)si; |
| this = vars; |
| while (this) { |