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