aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/broadcom-wl/patches/100-fix_nvram_two_devices.patch
blob: 6cf6faeddd1478168d71781f4d9290d4f8ad5de0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
--- 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) {