No other architecture calls check_pgt_cache() from within flush_tlb_mm(),
and i386 is already calling check_pgt_cache() from the usual places,
tlb_finish_mmu() and cpu_idle() (the latter being odd, but not unusual).
flush_tlb_mm() has no business to be freeing pages: remove that line,
which sneaked in with slub's i386 support.
Signed-off-by: Hugh Dickins <[email protected]>
---
arch/i386/kernel/smp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- 2.6.22-rc1/arch/i386/kernel/smp.c 2007-05-13 05:40:51.000000000 +0100
+++ linux/arch/i386/kernel/smp.c 2007-05-15 17:49:48.000000000 +0100
@@ -421,7 +421,7 @@ void flush_tlb_mm (struct mm_struct * mm
}
if (!cpus_empty(cpu_mask))
flush_tlb_others(cpu_mask, mm, TLB_FLUSH_ALL);
- check_pgt_cache();
+
preempt_enable();
}
Acked-by: Christoph Lameter <[email protected]>
On Tue, May 15, 2007 at 07:51:05PM +0100, Hugh Dickins wrote:
> No other architecture calls check_pgt_cache() from within flush_tlb_mm(),
> and i386 is already calling check_pgt_cache() from the usual places,
> tlb_finish_mmu() and cpu_idle() (the latter being odd, but not unusual).
> flush_tlb_mm() has no business to be freeing pages: remove that line,
> which sneaked in with slub's i386 support.
> Signed-off-by: Hugh Dickins <[email protected]>
Acked-by: William Irwin <[email protected]>
-- wli