Andrew, Linus, please apply:
Fix a stupid unbalanced lock bug in the ppc64 hugepage code. Lead
rapidly to a crash if both CONFIG_HUGETLB_PAGE and CONFIG_PREEMPT were
enabled (even without actually using hugepages at all).
Signed-off-by: David Gibson <[email protected]>
Index: working-2.6/arch/ppc64/mm/hugetlbpage.c
===================================================================
--- working-2.6.orig/arch/ppc64/mm/hugetlbpage.c 2005-01-06 10:47:48.000000000 +1100
+++ working-2.6/arch/ppc64/mm/hugetlbpage.c 2005-01-10 15:16:25.142319552 +1100
@@ -745,7 +745,7 @@
pgdir = mm->context.huge_pgdir;
if (! pgdir)
- return;
+ goto out;
mm->context.huge_pgdir = NULL;
@@ -768,6 +768,7 @@
BUG_ON(memcmp(pgdir, empty_zero_page, PAGE_SIZE));
kmem_cache_free(zero_cache, pgdir);
+ out:
spin_unlock(&mm->page_table_lock);
}
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist. NOT _the_ _other_ _way_
| _around_!
http://www.ozlabs.org/people/dgibson
On Tue, Jan 11, 2005 at 02:55:20AM +1100, David Gibson wrote:
> Andrew, Linus, please apply:
> Fix a stupid unbalanced lock bug in the ppc64 hugepage code. Lead
> rapidly to a crash if both CONFIG_HUGETLB_PAGE and CONFIG_PREEMPT were
> enabled (even without actually using hugepages at all).
> Signed-off-by: David Gibson <[email protected]>
Acked-by: William Irwin <[email protected]>