From: "Siddha, Suresh B" Fix the x86_64 TSS limit in TSS descriptor. Signed-off-by: Suresh Siddha Cc: Andi Kleen Signed-off-by: Andrew Morton --- include/asm-x86_64/desc.h | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff -puN include/asm-x86_64/desc.h~x86_64-fix-tss-limit include/asm-x86_64/desc.h --- 25/include/asm-x86_64/desc.h~x86_64-fix-tss-limit Fri Sep 23 16:42:59 2005 +++ 25-akpm/include/asm-x86_64/desc.h Fri Sep 23 16:42:59 2005 @@ -129,9 +129,16 @@ static inline void set_tssldt_descriptor static inline void set_tss_desc(unsigned cpu, void *addr) { - set_tssldt_descriptor(&cpu_gdt_table[cpu][GDT_ENTRY_TSS], (unsigned long)addr, - DESC_TSS, - sizeof(struct tss_struct) - 1); + /* + * sizeof(unsigned long) coming from an extra "long" at the end + * of the iobitmap. See tss_struct definition in processor.h + * + * -1? seg base+limit should be pointing to the address of the + * last valid byte + */ + set_tssldt_descriptor(&cpu_gdt_table[cpu][GDT_ENTRY_TSS], + (unsigned long)addr, DESC_TSS, + IO_BITMAP_OFFSET + IO_BITMAP_BYTES + sizeof(unsigned long) - 1); } static inline void set_ldt_desc(unsigned cpu, void *addr, int size) _