mmap.c (35858adbfca13678af99fb31618ef4428d6dedb0) | mmap.c (c58267c32429ea6535428ca6b8a036892c1697f2) |
---|---|
1/* 2 * mm/mmap.c 3 * 4 * Written by obz. 5 * 6 * Address space accounting code <alan@lxorguk.ukuu.org.uk> 7 */ 8 --- 1251 unchanged lines hidden (view full) --- 1260 if (correct_wcount) 1261 atomic_inc(&inode->i_writecount); 1262out: 1263 perf_event_mmap(vma); 1264 1265 mm->total_vm += len >> PAGE_SHIFT; 1266 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); 1267 if (vm_flags & VM_LOCKED) { | 1/* 2 * mm/mmap.c 3 * 4 * Written by obz. 5 * 6 * Address space accounting code <alan@lxorguk.ukuu.org.uk> 7 */ 8 --- 1251 unchanged lines hidden (view full) --- 1260 if (correct_wcount) 1261 atomic_inc(&inode->i_writecount); 1262out: 1263 perf_event_mmap(vma); 1264 1265 mm->total_vm += len >> PAGE_SHIFT; 1266 vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); 1267 if (vm_flags & VM_LOCKED) { |
1268 /* 1269 * makes pages present; downgrades, drops, reacquires mmap_sem 1270 */ | |
1271 long nr_pages = mlock_vma_pages_range(vma, addr, addr + len); | 1268 long nr_pages = mlock_vma_pages_range(vma, addr, addr + len); |
1272 if (nr_pages < 0) 1273 return nr_pages; /* vma gone! */ | |
1274 mm->locked_vm += (len >> PAGE_SHIFT) - nr_pages; 1275 } else if ((flags & MAP_POPULATE) && !(flags & MAP_NONBLOCK)) 1276 make_pages_present(addr, addr + len); 1277 return addr; 1278 1279unmap_and_free_vma: 1280 if (correct_wcount) 1281 atomic_inc(&inode->i_writecount); --- 467 unchanged lines hidden (view full) --- 1749 1750 addr &= PAGE_MASK; 1751 vma = find_vma_prev(mm, addr, &prev); 1752 if (vma && (vma->vm_start <= addr)) 1753 return vma; 1754 if (!prev || expand_stack(prev, addr)) 1755 return NULL; 1756 if (prev->vm_flags & VM_LOCKED) { | 1269 mm->locked_vm += (len >> PAGE_SHIFT) - nr_pages; 1270 } else if ((flags & MAP_POPULATE) && !(flags & MAP_NONBLOCK)) 1271 make_pages_present(addr, addr + len); 1272 return addr; 1273 1274unmap_and_free_vma: 1275 if (correct_wcount) 1276 atomic_inc(&inode->i_writecount); --- 467 unchanged lines hidden (view full) --- 1744 1745 addr &= PAGE_MASK; 1746 vma = find_vma_prev(mm, addr, &prev); 1747 if (vma && (vma->vm_start <= addr)) 1748 return vma; 1749 if (!prev || expand_stack(prev, addr)) 1750 return NULL; 1751 if (prev->vm_flags & VM_LOCKED) { |
1757 if (mlock_vma_pages_range(prev, addr, prev->vm_end) < 0) 1758 return NULL; /* vma gone! */ | 1752 mlock_vma_pages_range(prev, addr, prev->vm_end); |
1759 } 1760 return prev; 1761} 1762#else 1763int expand_stack(struct vm_area_struct *vma, unsigned long address) 1764{ 1765 return expand_downwards(vma, address); 1766} --- 11 unchanged lines hidden (view full) --- 1778 if (vma->vm_start <= addr) 1779 return vma; 1780 if (!(vma->vm_flags & VM_GROWSDOWN)) 1781 return NULL; 1782 start = vma->vm_start; 1783 if (expand_stack(vma, addr)) 1784 return NULL; 1785 if (vma->vm_flags & VM_LOCKED) { | 1753 } 1754 return prev; 1755} 1756#else 1757int expand_stack(struct vm_area_struct *vma, unsigned long address) 1758{ 1759 return expand_downwards(vma, address); 1760} --- 11 unchanged lines hidden (view full) --- 1772 if (vma->vm_start <= addr) 1773 return vma; 1774 if (!(vma->vm_flags & VM_GROWSDOWN)) 1775 return NULL; 1776 start = vma->vm_start; 1777 if (expand_stack(vma, addr)) 1778 return NULL; 1779 if (vma->vm_flags & VM_LOCKED) { |
1786 if (mlock_vma_pages_range(vma, addr, start) < 0) 1787 return NULL; /* vma gone! */ | 1780 mlock_vma_pages_range(vma, addr, start); |
1788 } 1789 return vma; 1790} 1791#endif 1792 1793/* 1794 * Ok - we have the memory areas we should free on the vma list, 1795 * so release them, and do the vma updates. --- 757 unchanged lines hidden --- | 1781 } 1782 return vma; 1783} 1784#endif 1785 1786/* 1787 * Ok - we have the memory areas we should free on the vma list, 1788 * so release them, and do the vma updates. --- 757 unchanged lines hidden --- |