Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
[linux-2.6-block.git] / arch / x86 / math-emu / get_address.c
index 420b3b6e39152d86d1c81e4e6ab69f65dbc69cbf..8300db71c2a62681006e137350961742190ec9dc 100644 (file)
@@ -20,7 +20,6 @@
 #include <linux/stddef.h>
 
 #include <asm/uaccess.h>
-#include <asm/desc.h>
 
 #include "fpu_system.h"
 #include "exception.h"
@@ -150,17 +149,15 @@ static long pm_address(u_char FPU_modrm, u_char segment,
 #endif /* PARANOID */
 
        switch (segment) {
-               /* gs isn't used by the kernel, so it still has its
-                  user-space value. */
        case PREFIX_GS_ - 1:
-               /* N.B. - movl %seg, mem is a 2 byte write regardless of prefix */
-               savesegment(gs, addr->selector);
+               /* user gs handling can be lazy, use special accessors */
+               addr->selector = get_user_gs(FPU_info->regs);
                break;
        default:
                addr->selector = PM_REG_(segment);
        }
 
-       descriptor = LDT_DESCRIPTOR(PM_REG_(segment));
+       descriptor = FPU_get_ldt_descriptor(addr->selector);
        base_address = SEG_BASE_ADDR(descriptor);
        address = base_address + offset;
        limit = base_address