diff --git a/mm/memory.c b/mm/memory.c index c7a2e1f7394..76bdd09950b 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2614,26 +2614,6 @@ out_page: return ret; } -/* - * This is like a special single-page "expand_downwards()", - * except we must first make sure that 'address-PAGE_SIZE' - * doesn't hit another vma. - * - * The "find_vma()" will do the right thing even if we wrap - */ -static inline int check_stack_guard_page(struct vm_area_struct *vma, unsigned long address) -{ - address &= PAGE_MASK; - if ((vma->vm_flags & VM_GROWSDOWN) && address == vma->vm_start) { - address -= PAGE_SIZE; - if (find_vma(vma->vm_mm, address) != vma) - return -ENOMEM; - - expand_stack(vma, address); - } - return 0; -} - /* * We enter with non-exclusive mmap_sem (to exclude vma changes, * but allow concurrent faults), and pte mapped but not yet locked. @@ -2647,22 +2627,6 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, spinlock_t *ptl; pte_t entry; - pte_unmap(page_table); - - /* Check if we need to add a guard page to the stack */ - if (check_stack_guard_page(vma, address) < 0) - return VM_FAULT_SIGBUS; - - /* Use the zero-page for reads */ - if (!(flags & FAULT_FLAG_WRITE)) { - entry = pte_mkspecial(pfn_pte(my_zero_pfn(address), - vma->vm_page_prot)); - page_table = pte_offset_map_lock(mm, pmd, address, &ptl); - if (!pte_none(*page_table)) - goto unlock; - goto setpte; - } - /* Allocate our own private page. */ if (unlikely(anon_vma_prepare(vma))) goto oom; @@ -2683,7 +2647,6 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, goto release; inc_mm_counter(mm, anon_rss); page_add_new_anon_rmap(page, vma, address); -setpte: set_pte_at(mm, address, page_table, entry); /* No need to invalidate - it was non-present before */