diff --git a/include/asm-x86/desc_64.h b/include/asm-x86/desc_64.h index 887393f044b17dca6d9bc75528334fab5b254b53..c49f928ed8b6963fdd9a2ca62ce9f93522f96ce1 100644 --- a/include/asm-x86/desc_64.h +++ b/include/asm-x86/desc_64.h @@ -113,7 +113,7 @@ static inline void store_idt(struct desc_ptr *dtr) static inline void set_tssldt_descriptor(void *ptr, unsigned long tss, unsigned type, unsigned size) { - struct ldttss_desc d; + struct ldttss_desc64 d; memset(&d, 0, sizeof(d)); d.limit0 = size & 0xFFFF; diff --git a/include/asm-x86/desc_defs.h b/include/asm-x86/desc_defs.h index 9732285116afc50b64043cc7af2df60299f0f95f..09ea05243497d9bba4e1f567f3dec2ada1c8e3f3 100644 --- a/include/asm-x86/desc_defs.h +++ b/include/asm-x86/desc_defs.h @@ -58,7 +58,7 @@ enum { }; // LDT or TSS descriptor in the GDT. 16 bytes. -struct ldttss_desc { +struct ldttss_desc64 { u16 limit0; u16 base0; unsigned base1 : 8, type : 5, dpl : 2, p : 1; @@ -69,8 +69,10 @@ struct ldttss_desc { #ifdef CONFIG_X86_64 typedef struct gate_struct64 gate_desc; +typedef struct ldttss_desc64 ldt_desc; #else typedef struct desc_struct gate_desc; +typedef struct desc_struct ldt_desc; #endif struct desc_ptr {