diff options
Diffstat (limited to 'mm/mmap.c')
-rw-r--r-- | mm/mmap.c | 12 |
1 files changed, 3 insertions, 9 deletions
@@ -906,14 +906,7 @@ struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma) | |||
906 | if (anon_vma) | 906 | if (anon_vma) |
907 | return anon_vma; | 907 | return anon_vma; |
908 | try_prev: | 908 | try_prev: |
909 | /* | 909 | near = vma->vm_prev; |
910 | * It is potentially slow to have to call find_vma_prev here. | ||
911 | * But it's only on the first write fault on the vma, not | ||
912 | * every time, and we could devise a way to avoid it later | ||
913 | * (e.g. stash info in next's anon_vma_node when assigning | ||
914 | * an anon_vma, or when trying vma_merge). Another time. | ||
915 | */ | ||
916 | BUG_ON(find_vma_prev(vma->vm_mm, vma->vm_start, &near) != vma); | ||
917 | if (!near) | 910 | if (!near) |
918 | goto none; | 911 | goto none; |
919 | 912 | ||
@@ -2044,9 +2037,10 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) | |||
2044 | return -EINVAL; | 2037 | return -EINVAL; |
2045 | 2038 | ||
2046 | /* Find the first overlapping VMA */ | 2039 | /* Find the first overlapping VMA */ |
2047 | vma = find_vma_prev(mm, start, &prev); | 2040 | vma = find_vma(mm, start); |
2048 | if (!vma) | 2041 | if (!vma) |
2049 | return 0; | 2042 | return 0; |
2043 | prev = vma->vm_prev; | ||
2050 | /* we have start < vma->vm_end */ | 2044 | /* we have start < vma->vm_end */ |
2051 | 2045 | ||
2052 | /* if it doesn't overlap, we have nothing.. */ | 2046 | /* if it doesn't overlap, we have nothing.. */ |