mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	riscv: mmap with PROT_WRITE but no PROT_READ is invalid
As mentioned in Table 4.5 in RISC-V spec Volume 2 Section 4.3, write but not read is "Reserved for future use.". For now, they are not valid. In the current code, -wx is marked as invalid, but -w- is not marked as invalid. This patch refines that judgment. Reported-by: xctan <xc-tan@outlook.com> Co-developed-by: dram <dramforever@live.com> Signed-off-by: dram <dramforever@live.com> Co-developed-by: Ruizhe Pan <c141028@gmail.com> Signed-off-by: Ruizhe Pan <c141028@gmail.com> Signed-off-by: Celeste Liu <coelacanthus@outlook.com> Link: https://lore.kernel.org/r/PH7PR14MB559464DBDD310E755F5B21E8CEDC9@PH7PR14MB5594.namprd14.prod.outlook.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
		
							parent
							
								
									8916c9054f
								
							
						
					
					
						commit
						2139619bca
					
				
					 1 changed files with 2 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -18,9 +18,8 @@ static long riscv_sys_mmap(unsigned long addr, unsigned long len,
 | 
			
		|||
	if (unlikely(offset & (~PAGE_MASK >> page_shift_offset)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	if ((prot & PROT_WRITE) && (prot & PROT_EXEC))
 | 
			
		||||
		if (unlikely(!(prot & PROT_READ)))
 | 
			
		||||
			return -EINVAL;
 | 
			
		||||
	if (unlikely((prot & PROT_WRITE) && !(prot & PROT_READ)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	return ksys_mmap_pgoff(addr, len, prot, flags, fd,
 | 
			
		||||
			       offset >> (PAGE_SHIFT - page_shift_offset));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue