diff options
Diffstat (limited to 'arch/x86/ia32')
| -rw-r--r-- | arch/x86/ia32/ia32_aout.c | 1 | ||||
| -rw-r--r-- | arch/x86/ia32/ia32entry.S | 35 | ||||
| -rw-r--r-- | arch/x86/ia32/sys_ia32.c | 1 |
3 files changed, 18 insertions, 19 deletions
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c index 2d93bdbc9ac0..fd843877e841 100644 --- a/arch/x86/ia32/ia32_aout.c +++ b/arch/x86/ia32/ia32_aout.c | |||
| @@ -298,6 +298,7 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs) | |||
| 298 | /* OK, This is the point of no return */ | 298 | /* OK, This is the point of no return */ |
| 299 | set_personality(PER_LINUX); | 299 | set_personality(PER_LINUX); |
| 300 | set_thread_flag(TIF_IA32); | 300 | set_thread_flag(TIF_IA32); |
| 301 | current->mm->context.ia32_compat = 1; | ||
| 301 | 302 | ||
| 302 | setup_new_exec(bprm); | 303 | setup_new_exec(bprm); |
| 303 | 304 | ||
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 518bb99c3394..c1870dddd322 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
| @@ -25,6 +25,8 @@ | |||
| 25 | #define sysretl_audit ia32_ret_from_sys_call | 25 | #define sysretl_audit ia32_ret_from_sys_call |
| 26 | #endif | 26 | #endif |
| 27 | 27 | ||
| 28 | .section .entry.text, "ax" | ||
| 29 | |||
| 28 | #define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8) | 30 | #define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8) |
| 29 | 31 | ||
| 30 | .macro IA32_ARG_FIXUP noebp=0 | 32 | .macro IA32_ARG_FIXUP noebp=0 |
| @@ -126,26 +128,20 @@ ENTRY(ia32_sysenter_target) | |||
| 126 | */ | 128 | */ |
| 127 | ENABLE_INTERRUPTS(CLBR_NONE) | 129 | ENABLE_INTERRUPTS(CLBR_NONE) |
| 128 | movl %ebp,%ebp /* zero extension */ | 130 | movl %ebp,%ebp /* zero extension */ |
| 129 | pushq $__USER32_DS | 131 | pushq_cfi $__USER32_DS |
| 130 | CFI_ADJUST_CFA_OFFSET 8 | ||
| 131 | /*CFI_REL_OFFSET ss,0*/ | 132 | /*CFI_REL_OFFSET ss,0*/ |
| 132 | pushq %rbp | 133 | pushq_cfi %rbp |
| 133 | CFI_ADJUST_CFA_OFFSET 8 | ||
| 134 | CFI_REL_OFFSET rsp,0 | 134 | CFI_REL_OFFSET rsp,0 |
| 135 | pushfq | 135 | pushfq_cfi |
| 136 | CFI_ADJUST_CFA_OFFSET 8 | ||
| 137 | /*CFI_REL_OFFSET rflags,0*/ | 136 | /*CFI_REL_OFFSET rflags,0*/ |
| 138 | movl 8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d | 137 | movl 8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d |
| 139 | CFI_REGISTER rip,r10 | 138 | CFI_REGISTER rip,r10 |
| 140 | pushq $__USER32_CS | 139 | pushq_cfi $__USER32_CS |
| 141 | CFI_ADJUST_CFA_OFFSET 8 | ||
| 142 | /*CFI_REL_OFFSET cs,0*/ | 140 | /*CFI_REL_OFFSET cs,0*/ |
| 143 | movl %eax, %eax | 141 | movl %eax, %eax |
| 144 | pushq %r10 | 142 | pushq_cfi %r10 |
| 145 | CFI_ADJUST_CFA_OFFSET 8 | ||
| 146 | CFI_REL_OFFSET rip,0 | 143 | CFI_REL_OFFSET rip,0 |
| 147 | pushq %rax | 144 | pushq_cfi %rax |
| 148 | CFI_ADJUST_CFA_OFFSET 8 | ||
| 149 | cld | 145 | cld |
| 150 | SAVE_ARGS 0,0,1 | 146 | SAVE_ARGS 0,0,1 |
| 151 | /* no need to do an access_ok check here because rbp has been | 147 | /* no need to do an access_ok check here because rbp has been |
| @@ -182,11 +178,9 @@ sysexit_from_sys_call: | |||
| 182 | xorq %r9,%r9 | 178 | xorq %r9,%r9 |
| 183 | xorq %r10,%r10 | 179 | xorq %r10,%r10 |
| 184 | xorq %r11,%r11 | 180 | xorq %r11,%r11 |
| 185 | popfq | 181 | popfq_cfi |
| 186 | CFI_ADJUST_CFA_OFFSET -8 | ||
| 187 | /*CFI_RESTORE rflags*/ | 182 | /*CFI_RESTORE rflags*/ |
| 188 | popq %rcx /* User %esp */ | 183 | popq_cfi %rcx /* User %esp */ |
| 189 | CFI_ADJUST_CFA_OFFSET -8 | ||
| 190 | CFI_REGISTER rsp,rcx | 184 | CFI_REGISTER rsp,rcx |
| 191 | TRACE_IRQS_ON | 185 | TRACE_IRQS_ON |
| 192 | ENABLE_INTERRUPTS_SYSEXIT32 | 186 | ENABLE_INTERRUPTS_SYSEXIT32 |
| @@ -421,8 +415,7 @@ ENTRY(ia32_syscall) | |||
| 421 | */ | 415 | */ |
| 422 | ENABLE_INTERRUPTS(CLBR_NONE) | 416 | ENABLE_INTERRUPTS(CLBR_NONE) |
| 423 | movl %eax,%eax | 417 | movl %eax,%eax |
| 424 | pushq %rax | 418 | pushq_cfi %rax |
| 425 | CFI_ADJUST_CFA_OFFSET 8 | ||
| 426 | cld | 419 | cld |
| 427 | /* note the registers are not zero extended to the sf. | 420 | /* note the registers are not zero extended to the sf. |
| 428 | this could be a problem. */ | 421 | this could be a problem. */ |
| @@ -851,4 +844,10 @@ ia32_sys_call_table: | |||
| 851 | .quad sys_fanotify_init | 844 | .quad sys_fanotify_init |
| 852 | .quad sys32_fanotify_mark | 845 | .quad sys32_fanotify_mark |
| 853 | .quad sys_prlimit64 /* 340 */ | 846 | .quad sys_prlimit64 /* 340 */ |
| 847 | .quad sys_name_to_handle_at | ||
| 848 | .quad compat_sys_open_by_handle_at | ||
| 849 | .quad compat_sys_clock_adjtime | ||
| 850 | .quad sys_syncfs | ||
| 851 | .quad compat_sys_sendmmsg /* 345 */ | ||
| 852 | .quad sys_setns | ||
| 854 | ia32_syscall_end: | 853 | ia32_syscall_end: |
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index 849813f398e7..5852519b2d0f 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c | |||
| @@ -28,7 +28,6 @@ | |||
| 28 | #include <linux/syscalls.h> | 28 | #include <linux/syscalls.h> |
| 29 | #include <linux/times.h> | 29 | #include <linux/times.h> |
| 30 | #include <linux/utsname.h> | 30 | #include <linux/utsname.h> |
| 31 | #include <linux/smp_lock.h> | ||
| 32 | #include <linux/mm.h> | 31 | #include <linux/mm.h> |
| 33 | #include <linux/uio.h> | 32 | #include <linux/uio.h> |
| 34 | #include <linux/poll.h> | 33 | #include <linux/poll.h> |
