]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86: Remove __USER32_DS
authorBrian Gerst <brgerst@gmail.com>
Mon, 6 Jun 2022 20:37:58 +0000 (16:37 -0400)
committerBorislav Petkov <bp@suse.de>
Wed, 19 Oct 2022 07:58:49 +0000 (09:58 +0200)
Replace all users with the equivalent __USER_DS, which will make merging
native and compat code simpler.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Link: https://lore.kernel.org/r/20220606203802.158958-5-brgerst@gmail.com
Signed-off-by: Borislav Petkov <bp@suse.de>
arch/x86/entry/entry_64_compat.S
arch/x86/ia32/ia32_signal.c
arch/x86/include/asm/elf.h
arch/x86/include/asm/segment.h
arch/x86/xen/xen-asm.S

index 4dd19819053a5848d1ee0ff3ab3c44c0a09c283e..59b93901660db94092d1e881d58affe919234673 100644 (file)
@@ -61,7 +61,7 @@ SYM_CODE_START(entry_SYSENTER_compat)
        movq    PER_CPU_VAR(cpu_current_top_of_stack), %rsp
 
        /* Construct struct pt_regs on stack */
-       pushq   $__USER32_DS            /* pt_regs->ss */
+       pushq   $__USER_DS              /* pt_regs->ss */
        pushq   $0                      /* pt_regs->sp = 0 (placeholder) */
 
        /*
@@ -197,7 +197,7 @@ SYM_INNER_LABEL(entry_SYSCALL_compat_safe_stack, SYM_L_GLOBAL)
        ANNOTATE_NOENDBR
 
        /* Construct struct pt_regs on stack */
-       pushq   $__USER32_DS            /* pt_regs->ss */
+       pushq   $__USER_DS              /* pt_regs->ss */
        pushq   %r8                     /* pt_regs->sp */
        pushq   %r11                    /* pt_regs->flags */
        pushq   $__USER32_CS            /* pt_regs->cs */
index b67e27685d46a7ba5430c91e64b1ac0c6f7455ee..a78885e3e85dafc47ec205d77dba069553d0fdff 100644 (file)
@@ -212,7 +212,7 @@ static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs,
        if (ksig->ka.sa.sa_flags & SA_ONSTACK)
                sp = sigsp(sp, ksig);
        /* This is the legacy signal stack switching. */
-       else if (regs->ss != __USER32_DS &&
+       else if (regs->ss != __USER_DS &&
                !(ksig->ka.sa.sa_flags & SA_RESTORER) &&
                 ksig->ka.sa.sa_restorer)
                sp = (unsigned long) ksig->ka.sa.sa_restorer;
@@ -284,11 +284,11 @@ int ia32_setup_frame(struct ksignal *ksig, struct pt_regs *regs)
        regs->dx = 0;
        regs->cx = 0;
 
-       loadsegment(ds, __USER32_DS);
-       loadsegment(es, __USER32_DS);
+       loadsegment(ds, __USER_DS);
+       loadsegment(es, __USER_DS);
 
        regs->cs = __USER32_CS;
-       regs->ss = __USER32_DS;
+       regs->ss = __USER_DS;
 
        return 0;
 Efault:
@@ -361,11 +361,11 @@ int ia32_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
        regs->dx = (unsigned long) &frame->info;
        regs->cx = (unsigned long) &frame->uc;
 
-       loadsegment(ds, __USER32_DS);
-       loadsegment(es, __USER32_DS);
+       loadsegment(ds, __USER_DS);
+       loadsegment(es, __USER_DS);
 
        regs->cs = __USER32_CS;
-       regs->ss = __USER32_DS;
+       regs->ss = __USER_DS;
 
        return 0;
 Efault:
index cb0ff1055ab1632f0c22b1f470ea8d0e57a23ffd..be8b58da63b9ebc9028c58c21b9c81f6e572f9e0 100644 (file)
@@ -152,10 +152,6 @@ do {                                               \
        (elf_check_arch_ia32(x) ||                                      \
         (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64))
 
-#if __USER32_DS != __USER_DS
-# error "The following code assumes __USER32_DS == __USER_DS"
-#endif
-
 static inline void elf_common_init(struct thread_struct *t,
                                   struct pt_regs *regs, const u16 ds)
 {
index 2e7890dd58a47714fbba4bbddb68e05605835ee5..e056c29dfcda82918421a615eb999e0e20f87cc8 100644 (file)
 #define __KERNEL_DS                    (GDT_ENTRY_KERNEL_DS*8)
 #define __USER32_CS                    (GDT_ENTRY_DEFAULT_USER32_CS*8 + 3)
 #define __USER_DS                      (GDT_ENTRY_DEFAULT_USER_DS*8 + 3)
-#define __USER32_DS                    __USER_DS
 #define __USER_CS                      (GDT_ENTRY_DEFAULT_USER_CS*8 + 3)
 #define __CPUNODE_SEG                  (GDT_ENTRY_CPUNODE*8 + 3)
 
index 6b4fdf6b95422b3787269f8950d6c10a3ed9b9da..4a184f6e4e4d9c781ed4c41ec3187ca7e1e34e5a 100644 (file)
@@ -262,10 +262,10 @@ SYM_CODE_START(xen_entry_SYSCALL_compat)
 
        /*
         * Neither Xen nor the kernel really knows what the old SS and
-        * CS were.  The kernel expects __USER32_DS and __USER32_CS, so
+        * CS were.  The kernel expects __USER_DS and __USER32_CS, so
         * report those values even though Xen will guess its own values.
         */
-       movq $__USER32_DS, 4*8(%rsp)
+       movq $__USER_DS, 4*8(%rsp)
        movq $__USER32_CS, 1*8(%rsp)
 
        jmp entry_SYSCALL_compat_after_hwframe
@@ -284,10 +284,10 @@ SYM_CODE_START(xen_entry_SYSENTER_compat)
 
        /*
         * Neither Xen nor the kernel really knows what the old SS and
-        * CS were.  The kernel expects __USER32_DS and __USER32_CS, so
+        * CS were.  The kernel expects __USER_DS and __USER32_CS, so
         * report those values even though Xen will guess its own values.
         */
-       movq $__USER32_DS, 4*8(%rsp)
+       movq $__USER_DS, 4*8(%rsp)
        movq $__USER32_CS, 1*8(%rsp)
 
        jmp entry_SYSENTER_compat_after_hwframe