In preparation to mapping the LDT RO, unconditionally set the accessed bit. Signed-off-by: Peter Zijlstra (Intel) --- arch/x86/include/asm/desc.h | 5 +++++ arch/x86/kernel/tls.c | 11 ++--------- 2 files changed, 7 insertions(+), 9 deletions(-) --- a/arch/x86/include/asm/desc.h +++ b/arch/x86/include/asm/desc.h @@ -20,6 +20,11 @@ static inline void fill_ldt(struct desc_ desc->type = (info->read_exec_only ^ 1) << 1; desc->type |= info->contents << 2; + /* + * Always set the accessed bit so that the CPU + * doesn't try to write to the (read-only) GDT/LDT. + */ + desc->type |= 1; desc->s = 1; desc->dpl = 0x3; --- a/arch/x86/kernel/tls.c +++ b/arch/x86/kernel/tls.c @@ -93,17 +93,10 @@ static void set_tls_desc(struct task_str cpu = get_cpu(); while (n-- > 0) { - if (LDT_empty(info) || LDT_zero(info)) { + if (LDT_empty(info) || LDT_zero(info)) memset(desc, 0, sizeof(*desc)); - } else { + else fill_ldt(desc, info); - - /* - * Always set the accessed bit so that the CPU - * doesn't try to write to the (read-only) GDT. - */ - desc->type |= 1; - } ++info; ++desc; }