nommu: check fd read permission in validate_mmap_request()
According to the POSIX (1003.1-2008), the file descriptor shall have been opened with read permission, regardless of the protection options specified to mmap(). The ltp test cases mmap06/07 need this. Signed-off-by: Graff Yang <graff.yang@gmail.com> Acked-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Greg Ungerer <gerg@snapgear.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
					parent
					
						
							
								1915297566
							
						
					
				
			
			
				commit
				
					
						28d7a6ae92
					
				
			
		
					 1 changed files with 4 additions and 0 deletions
				
			
		| 
						 | 
					@ -919,6 +919,10 @@ static int validate_mmap_request(struct file *file,
 | 
				
			||||||
		if (!file->f_op->read)
 | 
							if (!file->f_op->read)
 | 
				
			||||||
			capabilities &= ~BDI_CAP_MAP_COPY;
 | 
								capabilities &= ~BDI_CAP_MAP_COPY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* The file shall have been opened with read permission. */
 | 
				
			||||||
 | 
							if (!(file->f_mode & FMODE_READ))
 | 
				
			||||||
 | 
								return -EACCES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (flags & MAP_SHARED) {
 | 
							if (flags & MAP_SHARED) {
 | 
				
			||||||
			/* do checks for writing, appending and locking */
 | 
								/* do checks for writing, appending and locking */
 | 
				
			||||||
			if ((prot & PROT_WRITE) &&
 | 
								if ((prot & PROT_WRITE) &&
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue