--- linux-2.5.62/arch/i386/mm/pageattr.c.orig Fri Feb 21 13:27:59 2003 +++ linux-2.5.62/arch/i386/mm/pageattr.c Fri Feb 21 13:32:39 2003 @@ -131,10 +131,14 @@ static inline void flush_map(void) { -#ifdef CONFIG_SMP +#ifdef CONFIG_SMP + preempt_disable(); smp_call_function(flush_kernel_map, NULL, 1, 1); -#endif flush_kernel_map(NULL); + preempt_enable(); +#else + flush_kernel_map(NULL); +#endif } struct deferred_page { --- linux-2.5.62/arch/x86_64/mm/pageattr.c.orig Fri Feb 21 13:33:38 2003 +++ linux-2.5.62/arch/x86_64/mm/pageattr.c Fri Feb 21 13:34:40 2003 @@ -123,10 +123,14 @@ static inline void flush_map(unsigned long address) { -#ifdef CONFIG_SMP +#ifdef CONFIG_SMP + preempt_disable(); smp_call_function(flush_kernel_map, (void *)address, 1, 1); -#endif flush_kernel_map((void *)address); + preempt_enable(); +#else + flush_kernel_map((void *)address); +#endif } struct deferred_page {