public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mm: disable preemption in apply_to_pte_range
@ 2009-02-13  0:21 Jeremy Fitzhardinge
  2009-02-13  0:35 ` Jeremy Fitzhardinge
  0 siblings, 1 reply; 13+ messages in thread
From: Jeremy Fitzhardinge @ 2009-02-13  0:21 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Linux Kernel Mailing List

commit 79d9c90453a7bc9e7613ae889a97ff6b44ab8380
Author: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Date:   Thu Feb 12 13:45:34 2009 -0800

    mm: disable preemption in apply_to_pte_range
    
    Lazy mmu mode needs preemption disabled, so if we're apply to
    init_mm (which doesn't require any pte locks), then explicitly
    disable preemption.
    
    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

diff --git a/mm/memory.c b/mm/memory.c
index baa999e..71b3fb8 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1710,9 +1710,11 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
 	pgtable_t token;
 	spinlock_t *uninitialized_var(ptl);
 
-	pte = (mm == &init_mm) ?
-		pte_alloc_kernel(pmd, addr) :
-		pte_alloc_map_lock(mm, pmd, addr, &ptl);
+	if (mm == &init_mm) {
+		preempt_disable();
+		pte = pte_alloc_kernel(pmd, addr);
+	} else
+		pte = pte_alloc_map_lock(mm, pmd, addr, &ptl);
 	if (!pte)
 		return -ENOMEM;
 
@@ -1732,6 +1734,9 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
 
 	if (mm != &init_mm)
 		pte_unmap_unlock(pte-1, ptl);
+	else
+		preempt_enable();
+
 	return err;
 }



^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2009-02-14  9:56 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-13  0:21 [PATCH] mm: disable preemption in apply_to_pte_range Jeremy Fitzhardinge
2009-02-13  0:35 ` Jeremy Fitzhardinge
2009-02-13  0:55   ` Andrew Morton
2009-02-13  1:39     ` Jeremy Fitzhardinge
2009-02-13 11:48       ` Peter Zijlstra
2009-02-13 13:30         ` Nick Piggin
2009-02-13 14:16           ` Peter Zijlstra
2009-02-13 14:30             ` Nick Piggin
2009-02-13 14:38               ` Peter Zijlstra
2009-02-13 17:41                 ` Jeremy Fitzhardinge
2009-02-14  9:46                   ` Peter Zijlstra
2009-02-13 17:24         ` Jeremy Fitzhardinge
2009-02-14  9:56           ` Peter Zijlstra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox