mmap: save some cycles for the shared anonymous mapping
shmem_zero_setup() does not change vm_start, pgoff or vm_flags, only some drivers change them (such as /driver/video/bfin-t350mcqb-fb.c). Move these codes to a more proper place to save cycles for shared anonymous mapping. Signed-off-by: Huang Shijie <shijie8@gmail.com> Reviewed-by: Minchan Kim <minchan.kim@gmail.com> Acked-by: Hugh Dickins <hugh.dickins@tiscali.co.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
252c5f94d9
commit
f8dbf0a7a4
18
mm/mmap.c
18
mm/mmap.c
@ -1191,21 +1191,21 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
|
||||
goto unmap_and_free_vma;
|
||||
if (vm_flags & VM_EXECUTABLE)
|
||||
added_exe_file_vma(mm);
|
||||
|
||||
/* Can addr have changed??
|
||||
*
|
||||
* Answer: Yes, several device drivers can do it in their
|
||||
* f_op->mmap method. -DaveM
|
||||
*/
|
||||
addr = vma->vm_start;
|
||||
pgoff = vma->vm_pgoff;
|
||||
vm_flags = vma->vm_flags;
|
||||
} else if (vm_flags & VM_SHARED) {
|
||||
error = shmem_zero_setup(vma);
|
||||
if (error)
|
||||
goto free_vma;
|
||||
}
|
||||
|
||||
/* Can addr have changed??
|
||||
*
|
||||
* Answer: Yes, several device drivers can do it in their
|
||||
* f_op->mmap method. -DaveM
|
||||
*/
|
||||
addr = vma->vm_start;
|
||||
pgoff = vma->vm_pgoff;
|
||||
vm_flags = vma->vm_flags;
|
||||
|
||||
if (vma_wants_writenotify(vma))
|
||||
vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user