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 ---