| Kernel v2.4.1-pre6 /mm/memory.c |
|---|
 2.4.1-pre6
 mm
 memory.c
diff -u --recursive --new-file v2.4.0/linux/mm/memory.c linux/mm/memory.c
--- v2.4.0/linux/mm/memory.c Mon Jan 1 10:37:41 2001
+++ linux/mm/memory.c Mon Jan 8 15:39:38 2001
@@ -207,7 +207,8 @@
src_pte = pte_offset(src_pmd, address);
dst_pte = pte_offset(dst_pmd, address);
-
+
+ spin_lock(&src->page_table_lock);
do {
pte_t pte = *src_pte;
struct page *ptepage;
@@ -240,16 +241,21 @@
cont_copy_pte_range: set_pte(dst_pte, pte);
cont_copy_pte_range_noset: address += PAGE_SIZE;
if (address >= end)
- goto out;
+ goto out_unlock;
src_pte++;
dst_pte++;
} while ((unsigned long)src_pte & PTE_TABLE_MASK);
+ spin_unlock(&src->page_table_lock);
cont_copy_pmd_range: src_pmd++;
dst_pmd++;
} while ((unsigned long)src_pmd & PMD_TABLE_MASK);
}
out:
+ return 0;
+
+out_unlock:
+ spin_unlock(&src->page_table_lock);
return 0;
nomem:
|