diff options
| -rw-r--r-- | mm/memory.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/mm/memory.c b/mm/memory.c index 745b3482e6c2..ae259b6e5a21 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
| @@ -1433,12 +1433,11 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
| 1433 | unsigned long address, pte_t *page_table, pmd_t *pmd, | 1433 | unsigned long address, pte_t *page_table, pmd_t *pmd, |
| 1434 | spinlock_t *ptl, pte_t orig_pte) | 1434 | spinlock_t *ptl, pte_t orig_pte) |
| 1435 | { | 1435 | { |
| 1436 | struct page *old_page, *src_page, *new_page; | 1436 | struct page *old_page, *new_page; |
| 1437 | pte_t entry; | 1437 | pte_t entry; |
| 1438 | int ret = VM_FAULT_MINOR; | 1438 | int ret = VM_FAULT_MINOR; |
| 1439 | 1439 | ||
| 1440 | old_page = vm_normal_page(vma, address, orig_pte); | 1440 | old_page = vm_normal_page(vma, address, orig_pte); |
| 1441 | src_page = old_page; | ||
| 1442 | if (!old_page) | 1441 | if (!old_page) |
| 1443 | goto gotten; | 1442 | goto gotten; |
| 1444 | 1443 | ||
| @@ -1466,7 +1465,7 @@ gotten: | |||
| 1466 | 1465 | ||
| 1467 | if (unlikely(anon_vma_prepare(vma))) | 1466 | if (unlikely(anon_vma_prepare(vma))) |
| 1468 | goto oom; | 1467 | goto oom; |
| 1469 | if (src_page == ZERO_PAGE(address)) { | 1468 | if (old_page == ZERO_PAGE(address)) { |
| 1470 | new_page = alloc_zeroed_user_highpage(vma, address); | 1469 | new_page = alloc_zeroed_user_highpage(vma, address); |
| 1471 | if (!new_page) | 1470 | if (!new_page) |
| 1472 | goto oom; | 1471 | goto oom; |
| @@ -1474,7 +1473,7 @@ gotten: | |||
| 1474 | new_page = alloc_page_vma(GFP_HIGHUSER, vma, address); | 1473 | new_page = alloc_page_vma(GFP_HIGHUSER, vma, address); |
| 1475 | if (!new_page) | 1474 | if (!new_page) |
| 1476 | goto oom; | 1475 | goto oom; |
| 1477 | cow_user_page(new_page, src_page, address); | 1476 | cow_user_page(new_page, old_page, address); |
| 1478 | } | 1477 | } |
| 1479 | 1478 | ||
| 1480 | /* | 1479 | /* |
