mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			669 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			669 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 0;
 | |
| +
 | |
|  	sih = (si_t *)si;
 | |
|  	this = vars;
 | |
|  	while (this) {
 |