mmap.c (e37c83c06c2690157a989df40dc99a6b61c9ea15) mmap.c (3af9e859281bda7eb7c20b51879cf43aa788ac2e)
1/*
2 * mm/mmap.c
3 *
4 * Written by obz.
5 *
6 * Address space accounting code <alan@lxorguk.ukuu.org.uk>
7 */
8

--- 1720 unchanged lines hidden (view full) ---

1729 /* Somebody else might have raced and expanded it already */
1730 if (address > vma->vm_end) {
1731 unsigned long size, grow;
1732
1733 size = address - vma->vm_start;
1734 grow = (address - vma->vm_end) >> PAGE_SHIFT;
1735
1736 error = acct_stack_growth(vma, size, grow);
1/*
2 * mm/mmap.c
3 *
4 * Written by obz.
5 *
6 * Address space accounting code <alan@lxorguk.ukuu.org.uk>
7 */
8

--- 1720 unchanged lines hidden (view full) ---

1729 /* Somebody else might have raced and expanded it already */
1730 if (address > vma->vm_end) {
1731 unsigned long size, grow;
1732
1733 size = address - vma->vm_start;
1734 grow = (address - vma->vm_end) >> PAGE_SHIFT;
1735
1736 error = acct_stack_growth(vma, size, grow);
1737 if (!error)
1737 if (!error) {
1738 vma->vm_end = address;
1738 vma->vm_end = address;
1739 perf_event_mmap(vma);
1740 }
1739 }
1740 anon_vma_unlock(vma);
1741 return error;
1742}
1743#endif /* CONFIG_STACK_GROWSUP || CONFIG_IA64 */
1744
1745/*
1746 * vma is the first one with address < vma->vm_start. Have to extend vma.

--- 29 unchanged lines hidden (view full) ---

1776
1777 size = vma->vm_end - address;
1778 grow = (vma->vm_start - address) >> PAGE_SHIFT;
1779
1780 error = acct_stack_growth(vma, size, grow);
1781 if (!error) {
1782 vma->vm_start = address;
1783 vma->vm_pgoff -= grow;
1741 }
1742 anon_vma_unlock(vma);
1743 return error;
1744}
1745#endif /* CONFIG_STACK_GROWSUP || CONFIG_IA64 */
1746
1747/*
1748 * vma is the first one with address < vma->vm_start. Have to extend vma.

--- 29 unchanged lines hidden (view full) ---

1778
1779 size = vma->vm_end - address;
1780 grow = (vma->vm_start - address) >> PAGE_SHIFT;
1781
1782 error = acct_stack_growth(vma, size, grow);
1783 if (!error) {
1784 vma->vm_start = address;
1785 vma->vm_pgoff -= grow;
1786 perf_event_mmap(vma);
1784 }
1785 }
1786 anon_vma_unlock(vma);
1787 return error;
1788}
1789
1790int expand_stack_downwards(struct vm_area_struct *vma, unsigned long address)
1791{

--- 411 unchanged lines hidden (view full) ---

2203 vma->vm_mm = mm;
2204 vma->vm_start = addr;
2205 vma->vm_end = addr + len;
2206 vma->vm_pgoff = pgoff;
2207 vma->vm_flags = flags;
2208 vma->vm_page_prot = vm_get_page_prot(flags);
2209 vma_link(mm, vma, prev, rb_link, rb_parent);
2210out:
1787 }
1788 }
1789 anon_vma_unlock(vma);
1790 return error;
1791}
1792
1793int expand_stack_downwards(struct vm_area_struct *vma, unsigned long address)
1794{

--- 411 unchanged lines hidden (view full) ---

2206 vma->vm_mm = mm;
2207 vma->vm_start = addr;
2208 vma->vm_end = addr + len;
2209 vma->vm_pgoff = pgoff;
2210 vma->vm_flags = flags;
2211 vma->vm_page_prot = vm_get_page_prot(flags);
2212 vma_link(mm, vma, prev, rb_link, rb_parent);
2213out:
2214 perf_event_mmap(vma);
2211 mm->total_vm += len >> PAGE_SHIFT;
2212 if (flags & VM_LOCKED) {
2213 if (!mlock_vma_pages_range(vma, addr, addr + len))
2214 mm->locked_vm += (len >> PAGE_SHIFT);
2215 }
2216 return addr;
2217}
2218

--- 424 unchanged lines hidden ---
2215 mm->total_vm += len >> PAGE_SHIFT;
2216 if (flags & VM_LOCKED) {
2217 if (!mlock_vma_pages_range(vma, addr, addr + len))
2218 mm->locked_vm += (len >> PAGE_SHIFT);
2219 }
2220 return addr;
2221}
2222

--- 424 unchanged lines hidden ---