forked from mirrors/linux
		
	[PATCH] xip: madvice/fadvice: execute in place
Make sys_madvice/fadvice return sane with xip. Signed-off-by: Carsten Otte <cotte@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
							parent
							
								
									eb6fe0c388
								
							
						
					
					
						commit
						fe77ba6f4f
					
				
					 2 changed files with 9 additions and 0 deletions
				
			
		| 
						 | 
					@ -43,6 +43,10 @@ asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice)
 | 
				
			||||||
		goto out;
 | 
							goto out;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (mapping->a_ops->get_xip_page)
 | 
				
			||||||
 | 
							/* no bad return value, but ignore advice */
 | 
				
			||||||
 | 
							goto out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Careful about overflows. Len == 0 means "as much as possible" */
 | 
						/* Careful about overflows. Len == 0 means "as much as possible" */
 | 
				
			||||||
	endbyte = offset + len;
 | 
						endbyte = offset + len;
 | 
				
			||||||
	if (!len || endbyte < len)
 | 
						if (!len || endbyte < len)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,6 +86,11 @@ static long madvise_willneed(struct vm_area_struct * vma,
 | 
				
			||||||
	if (!file)
 | 
						if (!file)
 | 
				
			||||||
		return -EBADF;
 | 
							return -EBADF;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (file->f_mapping->a_ops->get_xip_page) {
 | 
				
			||||||
 | 
							/* no bad return value, but ignore advice */
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*prev = vma;
 | 
						*prev = vma;
 | 
				
			||||||
	start = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
 | 
						start = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
 | 
				
			||||||
	if (end > vma->vm_end)
 | 
						if (end > vma->vm_end)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue