
From: David Gibson <david@gibson.dropbear.id.au>

Currently the flag indicating whether or not hugepages are allowed below
4GB is not correctly propagated across fork(), which can lead to oopses. 
The patch below fixes this.



---

 include/asm-ppc64/mmu_context.h |    3 +++
 1 files changed, 3 insertions(+)

diff -puN include/asm-ppc64/mmu_context.h~ppc64-hugepages-fix include/asm-ppc64/mmu_context.h
--- 25/include/asm-ppc64/mmu_context.h~ppc64-hugepages-fix	2004-01-19 23:11:18.000000000 -0800
+++ 25-akpm/include/asm-ppc64/mmu_context.h	2004-01-19 23:11:18.000000000 -0800
@@ -81,6 +81,8 @@ init_new_context(struct task_struct *tsk
 {
 	long head;
 	unsigned long flags;
+	/* This does the right thing across a fork (I hope) */
+	unsigned long low_hpages = mm->context & CONTEXT_LOW_HPAGES;
 
 	spin_lock_irqsave(&mmu_context_queue.lock, flags);
 
@@ -91,6 +93,7 @@ init_new_context(struct task_struct *tsk
 
 	head = mmu_context_queue.head;
 	mm->context = mmu_context_queue.elements[head];
+	mm->context |= low_hpages;
 
 	head = (head < LAST_USER_CONTEXT-1) ? head+1 : 0;
 	mmu_context_queue.head = head;

_
