diff options
Diffstat (limited to 'mm/nommu.c')
| -rw-r--r-- | mm/nommu.c | 13 | 
1 files changed, 6 insertions, 7 deletions
diff --git a/mm/nommu.c b/mm/nommu.c index 605ace8982a..63fa17d121f 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -146,7 +146,7 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,  			(VM_MAYREAD | VM_MAYWRITE) : (VM_READ | VM_WRITE);  	for (i = 0; i < nr_pages; i++) { -		vma = find_extend_vma(mm, start); +		vma = find_vma(mm, start);  		if (!vma)  			goto finish_or_fault; @@ -162,7 +162,7 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,  		}  		if (vmas)  			vmas[i] = vma; -		start += PAGE_SIZE; +		start = (start + PAGE_SIZE) & PAGE_MASK;  	}  	return i; @@ -764,7 +764,7 @@ EXPORT_SYMBOL(find_vma);   */  struct vm_area_struct *find_extend_vma(struct mm_struct *mm, unsigned long addr)  { -	return find_vma(mm, addr & PAGE_MASK); +	return find_vma(mm, addr);  }  /* @@ -1040,10 +1040,9 @@ static int do_mmap_shared_file(struct vm_area_struct *vma)  	if (ret != -ENOSYS)  		return ret; -	/* getting an ENOSYS error indicates that direct mmap isn't -	 * possible (as opposed to tried but failed) so we'll fall -	 * through to making a private copy of the data and mapping -	 * that if we can */ +	/* getting -ENOSYS indicates that direct mmap isn't possible (as +	 * opposed to tried but failed) so we can only give a suitable error as +	 * it's not possible to make a private copy if MAP_SHARED was given */  	return -ENODEV;  }  |