Files
openwrt-23.05-nss-qsdk11/package/kernel/broadcom-wl/patches/100-fix_nvram_two_devices.patch
domenico 6d0099d1a1
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Initial commit
2025-06-24 16:07:44 +02:00

33 lines
667 B
Diff

--- 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) {