forked from Mirrors/opensbi
		
	lib: utils: missing initialization in thead_reset_init
If property csr-copy does not exist, fdt_getprop() will return NULL and cnt
will have a random value from the stack.
Call clone_csrs() only if cnt is initialized to a non-zero value.
Fixes: 49e422c5ad ("lib: utils: reset: Add T-HEAD sample platform reset driver")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Anup Patel
					
				
			
			
				
	
			
			
			
						parent
						
							1da3d80b5b
						
					
				
				
					commit
					360ab88569
				
			@@ -62,24 +62,26 @@ static int thead_reset_init(void *fdt, int nodeoff,
 | 
			
		||||
	void *p;
 | 
			
		||||
	const fdt64_t *val;
 | 
			
		||||
	const fdt32_t *val_w;
 | 
			
		||||
	int len, i, cnt;
 | 
			
		||||
	int len, i;
 | 
			
		||||
	u32 t, tmp = 0;
 | 
			
		||||
 | 
			
		||||
	/* Prepare clone csrs */
 | 
			
		||||
	val_w = fdt_getprop(fdt, nodeoff, "csr-copy", &len);
 | 
			
		||||
	if (len > 0 && val_w) {
 | 
			
		||||
		cnt = len / sizeof(fdt32_t);
 | 
			
		||||
		int cnt;
 | 
			
		||||
 | 
			
		||||
		cnt = len / sizeof(fdt32_t);
 | 
			
		||||
		if (cnt > MAX_CUSTOM_CSR)
 | 
			
		||||
			sbi_hart_hang();
 | 
			
		||||
 | 
			
		||||
		for (i = 0; i < cnt; i++) {
 | 
			
		||||
			custom_csr[i].index = fdt32_to_cpu(val_w[i]);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (cnt)
 | 
			
		||||
			clone_csrs(cnt);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (cnt)
 | 
			
		||||
		clone_csrs(cnt);
 | 
			
		||||
 | 
			
		||||
	/* Delegate plic enable regs for S-mode */
 | 
			
		||||
	val = fdt_getprop(fdt, nodeoff, "plic-delegate", &len);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user