forked from Mirrors/opensbi
		
	lib: sbi: check A2 register in ecall_dbcn_handler.
Do not ignore register A2 (high bits of physical address) in the dbcn handler (RV64). Signed-off-by: Gianluca Guida <gianluca@rivosinc.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
		
				
					committed by
					
						
						Anup Patel
					
				
			
			
				
	
			
			
			
						parent
						
							27c957a43b
						
					
				
				
					commit
					8bd666a25b
				
			@@ -34,11 +34,14 @@ static int sbi_ecall_dbcn_handler(unsigned long extid, unsigned long funcid,
 | 
			
		||||
		 * Based on above, we simply fail if the upper 32bits of
 | 
			
		||||
		 * the physical address (i.e. a2 register) is non-zero on
 | 
			
		||||
		 * RV32.
 | 
			
		||||
                 *
 | 
			
		||||
                 * Analogously, we fail if the upper 64bit of the
 | 
			
		||||
                 * physical address (i.e. a2 register) is non-zero on
 | 
			
		||||
                 * RV64.
 | 
			
		||||
		 */
 | 
			
		||||
#if __riscv_xlen == 32
 | 
			
		||||
		if (regs->a2)
 | 
			
		||||
			return SBI_ERR_FAILED;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		if (!sbi_domain_check_addr_range(sbi_domain_thishart_ptr(),
 | 
			
		||||
					regs->a1, regs->a0, smode,
 | 
			
		||||
					SBI_DOMAIN_READ|SBI_DOMAIN_WRITE))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user