diff --git a/[refs] b/[refs] index 5b2e00da640b..da710a383506 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 25deca53e9b74a899efd3ae1f4493f4f2ce36846 +refs/heads/master: 5af725026fe902bf81f1b90b1b9d9ee4b9e1eb6a diff --git a/trunk/arch/x86/kernel/ldt.c b/trunk/arch/x86/kernel/ldt.c index a8cdca3615bf..7eb0c8a45734 100644 --- a/trunk/arch/x86/kernel/ldt.c +++ b/trunk/arch/x86/kernel/ldt.c @@ -186,7 +186,7 @@ static int read_default_ldt(void __user *ptr, unsigned long bytecount) static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode) { struct mm_struct *mm = current->mm; - __u32 entry_1, entry_2; + struct desc_struct ldt; int error; struct user_desc ldt_info; @@ -218,21 +218,20 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode) /* Allow LDTs to be cleared by the user. */ if (ldt_info.base_addr == 0 && ldt_info.limit == 0) { if (oldmode || LDT_empty(&ldt_info)) { - entry_1 = 0; - entry_2 = 0; + memset(&ldt, 0, sizeof(ldt)); goto install; } } - entry_1 = LDT_entry_a(&ldt_info); - entry_2 = LDT_entry_b(&ldt_info); + ldt.a = LDT_entry_a(&ldt_info); + ldt.b = LDT_entry_b(&ldt_info); if (oldmode) - entry_2 &= ~(1 << 20); + ldt.avl = 0; /* Install the new entry ... */ install: - write_ldt_entry(mm->context.ldt, ldt_info.entry_number, entry_1, - entry_2); + write_ldt_entry(mm->context.ldt, ldt_info.entry_number, + ldt.a, ldt.b); error = 0; out_unlock: