|
@@ -1134,16 +1134,11 @@ munmap_back:
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Can we just expand an old private anonymous mapping?
|
|
|
|
- * The VM_SHARED test is necessary because shmem_zero_setup
|
|
|
|
- * will create the file object for a shared anonymous map below.
|
|
|
|
|
|
+ * Can we just expand an old mapping?
|
|
*/
|
|
*/
|
|
- if (!file && !(vm_flags & VM_SHARED)) {
|
|
|
|
- vma = vma_merge(mm, prev, addr, addr + len, vm_flags,
|
|
|
|
- NULL, NULL, pgoff, NULL);
|
|
|
|
- if (vma)
|
|
|
|
- goto out;
|
|
|
|
- }
|
|
|
|
|
|
+ vma = vma_merge(mm, prev, addr, addr + len, vm_flags, NULL, file, pgoff, NULL);
|
|
|
|
+ if (vma)
|
|
|
|
+ goto out;
|
|
|
|
|
|
/*
|
|
/*
|
|
* Determine the object being mapped and call the appropriate
|
|
* Determine the object being mapped and call the appropriate
|
|
@@ -1206,17 +1201,8 @@ munmap_back:
|
|
if (vma_wants_writenotify(vma))
|
|
if (vma_wants_writenotify(vma))
|
|
vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED);
|
|
vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED);
|
|
|
|
|
|
- if (file && vma_merge(mm, prev, addr, vma->vm_end,
|
|
|
|
- vma->vm_flags, NULL, file, pgoff, vma_policy(vma))) {
|
|
|
|
- mpol_put(vma_policy(vma));
|
|
|
|
- kmem_cache_free(vm_area_cachep, vma);
|
|
|
|
- fput(file);
|
|
|
|
- if (vm_flags & VM_EXECUTABLE)
|
|
|
|
- removed_exe_file_vma(mm);
|
|
|
|
- } else {
|
|
|
|
- vma_link(mm, vma, prev, rb_link, rb_parent);
|
|
|
|
- file = vma->vm_file;
|
|
|
|
- }
|
|
|
|
|
|
+ vma_link(mm, vma, prev, rb_link, rb_parent);
|
|
|
|
+ file = vma->vm_file;
|
|
|
|
|
|
/* Once vma denies write, undo our temporary denial count */
|
|
/* Once vma denies write, undo our temporary denial count */
|
|
if (correct_wcount)
|
|
if (correct_wcount)
|