--- zzzz-none-000/linux-2.6.19.2/include/asm-i386/mmu_context.h 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/include/asm-i386/mmu_context.h 2007-01-19 14:42:56.000000000 +0000 @@ -45,6 +45,17 @@ */ if (unlikely(prev->context.ldt != next->context.ldt)) load_LDT_nolock(&next->context, cpu); + +#if defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP) + cpu_clear(cpu, prev->context.cpu_user_cs_mask); + cpu_set(cpu, next->context.cpu_user_cs_mask); +#endif + +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) + if (unlikely(prev->context.user_cs_base != next->context.user_cs_base || + prev->context.user_cs_limit != next->context.user_cs_limit)) +#endif + set_user_cs(next, cpu); } #ifdef CONFIG_SMP else { @@ -57,6 +68,12 @@ */ load_cr3(next->pgd); load_LDT_nolock(&next->context, cpu); + +#ifdef CONFIG_PAX_PAGEEXEC + cpu_set(cpu, next->context.cpu_user_cs_mask); +#endif + + set_user_cs(next, cpu); } } #endif