]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ppc64: Bug fix for hugepages on ppc64
authorAndrew Morton <akpm@osdl.org>
Tue, 20 Jan 2004 11:10:38 +0000 (03:10 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Tue, 20 Jan 2004 11:10:38 +0000 (03:10 -0800)
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

index e43cdf5f72005c87a5f001a6c61a6fb6796da804..11a399c33086145909e23f62fbf2d8577098127c 100644 (file)
@@ -81,6 +81,8 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm)
 {
        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, struct mm_struct *mm)
 
        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;