From d3facca947360bdc58caa32c4ab5d20411dbac0e Mon Sep 17 00:00:00 2001 From: "Siddha, Suresh B" Date: Sun, 13 Nov 2005 16:06:21 -0800 Subject: [PATCH] --- yaml --- r: 14023 b: refs/heads/master c: 47936357c0d14809c3c9547e532511f6625654b2 h: refs/heads/master i: 14021: ddb11437f7a98b22611610aacd224eda01f1b1b8 14019: c155205657108ce6b398d1e7330f29e4f99ab828 14015: 3c54065cd61e87c4d44ae44ec49469e512975c76 v: v3 --- [refs] | 2 +- trunk/include/asm-x86_64/desc.h | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 0a9b85be3804..07b8656e0f7b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4ba529a8a39e15688b6a3d31b11930d1f8a1edad +refs/heads/master: 47936357c0d14809c3c9547e532511f6625654b2 diff --git a/trunk/include/asm-x86_64/desc.h b/trunk/include/asm-x86_64/desc.h index 68ac3c62fe3d..b837820c9073 100644 --- a/trunk/include/asm-x86_64/desc.h +++ b/trunk/include/asm-x86_64/desc.h @@ -129,9 +129,16 @@ static inline void set_tssldt_descriptor(void *ptr, unsigned long tss, unsigned 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)