diff options
Diffstat (limited to 'mm/mmap.c')
| -rw-r--r-- | mm/mmap.c | 10 |
1 files changed, 4 insertions, 6 deletions
| @@ -1105,12 +1105,6 @@ munmap_back: | |||
| 1105 | goto free_vma; | 1105 | goto free_vma; |
| 1106 | } | 1106 | } |
| 1107 | 1107 | ||
| 1108 | /* Don't make the VMA automatically writable if it's shared, but the | ||
| 1109 | * backer wishes to know when pages are first written to */ | ||
| 1110 | if (vma->vm_ops && vma->vm_ops->page_mkwrite) | ||
| 1111 | vma->vm_page_prot = | ||
| 1112 | protection_map[vm_flags & (VM_READ|VM_WRITE|VM_EXEC)]; | ||
| 1113 | |||
| 1114 | /* We set VM_ACCOUNT in a shared mapping's vm_flags, to inform | 1108 | /* We set VM_ACCOUNT in a shared mapping's vm_flags, to inform |
| 1115 | * shmem_zero_setup (perhaps called through /dev/zero's ->mmap) | 1109 | * shmem_zero_setup (perhaps called through /dev/zero's ->mmap) |
| 1116 | * that memory reservation must be checked; but that reservation | 1110 | * that memory reservation must be checked; but that reservation |
| @@ -1128,6 +1122,10 @@ munmap_back: | |||
| 1128 | pgoff = vma->vm_pgoff; | 1122 | pgoff = vma->vm_pgoff; |
| 1129 | vm_flags = vma->vm_flags; | 1123 | vm_flags = vma->vm_flags; |
| 1130 | 1124 | ||
| 1125 | if (vma_wants_writenotify(vma)) | ||
| 1126 | vma->vm_page_prot = | ||
| 1127 | protection_map[vm_flags & (VM_READ|VM_WRITE|VM_EXEC)]; | ||
| 1128 | |||
| 1131 | if (!file || !vma_merge(mm, prev, addr, vma->vm_end, | 1129 | if (!file || !vma_merge(mm, prev, addr, vma->vm_end, |
| 1132 | vma->vm_flags, NULL, file, pgoff, vma_policy(vma))) { | 1130 | vma->vm_flags, NULL, file, pgoff, vma_policy(vma))) { |
| 1133 | file = vma->vm_file; | 1131 | file = vma->vm_file; |
