diff options
| -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.. */ |
