From db7413e764101443810431acffa59e946331b25f Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Sat, 29 Oct 2005 18:15:53 -0700 Subject: [PATCH] --- yaml --- r: 11326 b: refs/heads/master c: e040f218bb49a6965a5b77edce05fe47a62dda39 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/memory.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index cd8a956465f0..10107b90cfd8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 09ad4bbc3a5c93316d7f4ffc0c310d9cbb28c2f0 +refs/heads/master: e040f218bb49a6965a5b77edce05fe47a62dda39 diff --git a/trunk/mm/memory.c b/trunk/mm/memory.c index 1db40e935e55..222c13e46130 100644 --- a/trunk/mm/memory.c +++ b/trunk/mm/memory.c @@ -410,7 +410,7 @@ static int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, { pte_t *src_pte, *dst_pte; unsigned long vm_flags = vma->vm_flags; - int progress; + int progress = 0; again: dst_pte = pte_alloc_map(dst_mm, dst_pmd, addr); @@ -418,17 +418,19 @@ static int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, return -ENOMEM; src_pte = pte_offset_map_nested(src_pmd, addr); - progress = 0; spin_lock(&src_mm->page_table_lock); do { /* * We are holding two locks at this point - either of them * could generate latencies in another task on another CPU. */ - if (progress >= 32 && (need_resched() || - need_lockbreak(&src_mm->page_table_lock) || - need_lockbreak(&dst_mm->page_table_lock))) - break; + if (progress >= 32) { + progress = 0; + if (need_resched() || + need_lockbreak(&src_mm->page_table_lock) || + need_lockbreak(&dst_mm->page_table_lock)) + break; + } if (pte_none(*src_pte)) { progress++; continue;