diff options
| author | Huang Shijie <shijie8@gmail.com> | 2009-09-21 20:03:41 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-22 10:17:41 -0400 |
| commit | f8dbf0a7a4c5d98e8b70da9f7f4f6a89f3b7a7bb (patch) | |
| tree | 1f40d51f39965017999c36e3a5ae78b67e43f5d5 | |
| parent | 252c5f94d944487e9f50ece7942b0fbf659c5c31 (diff) | |
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>
| -rw-r--r-- | mm/mmap.c | 18 |
1 files changed, 9 insertions, 9 deletions
| @@ -1191,21 +1191,21 @@ munmap_back: | |||
| 1191 | goto unmap_and_free_vma; | 1191 | goto unmap_and_free_vma; |
| 1192 | if (vm_flags & VM_EXECUTABLE) | 1192 | if (vm_flags & VM_EXECUTABLE) |
| 1193 | added_exe_file_vma(mm); | 1193 | added_exe_file_vma(mm); |
| 1194 | |||
| 1195 | /* Can addr have changed?? | ||
| 1196 | * | ||
| 1197 | * Answer: Yes, several device drivers can do it in their | ||
| 1198 | * f_op->mmap method. -DaveM | ||
| 1199 | */ | ||
| 1200 | addr = vma->vm_start; | ||
| 1201 | pgoff = vma->vm_pgoff; | ||
| 1202 | vm_flags = vma->vm_flags; | ||
| 1194 | } else if (vm_flags & VM_SHARED) { | 1203 | } else if (vm_flags & VM_SHARED) { |
| 1195 | error = shmem_zero_setup(vma); | 1204 | error = shmem_zero_setup(vma); |
| 1196 | if (error) | 1205 | if (error) |
| 1197 | goto free_vma; | 1206 | goto free_vma; |
| 1198 | } | 1207 | } |
| 1199 | 1208 | ||
| 1200 | /* Can addr have changed?? | ||
| 1201 | * | ||
| 1202 | * Answer: Yes, several device drivers can do it in their | ||
| 1203 | * f_op->mmap method. -DaveM | ||
| 1204 | */ | ||
| 1205 | addr = vma->vm_start; | ||
| 1206 | pgoff = vma->vm_pgoff; | ||
| 1207 | vm_flags = vma->vm_flags; | ||
| 1208 | |||
| 1209 | if (vma_wants_writenotify(vma)) | 1209 | if (vma_wants_writenotify(vma)) |
| 1210 | vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED); | 1210 | vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED); |
| 1211 | 1211 | ||
