diff -ur /md0/kernels/2.4/v2.4.8-ac3/mm/memory.c vm-2.4.8-ac3/mm/memory.c --- /md0/kernels/2.4/v2.4.8-ac3/mm/memory.c Mon Aug 13 15:12:54 2001 +++ vm-2.4.8-ac3/mm/memory.c Mon Aug 13 15:21:00 2001 @@ -238,8 +238,10 @@ cont_copy_pte_range: set_pte(dst_pte, pte); cont_copy_pte_range_noset: address += PAGE_SIZE; - if (address >= end) - goto out_unlock; + if (address >= end) { + spin_unlock(&src->page_table_lock); + goto out; + } src_pte++; dst_pte++; } while ((unsigned long)src_pte & PTE_TABLE_MASK); @@ -249,8 +251,6 @@ dst_pmd++; } while ((unsigned long)src_pmd & PMD_TABLE_MASK); } -out_unlock: - spin_unlock(&src->page_table_lock); out: spin_unlock(&dst->page_table_lock); return 0;