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(); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/