diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-11 21:49:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-11 21:49:08 -0400 |
commit | 8213a2f3eeafdecf06dd718cb4130372263f6067 (patch) | |
tree | 0d02e3201dac64d1429f8552ee1163d4a1ef1646 /arch/x86/kernel/entry_32.S | |
parent | 40924754f2cabd5d9af4bcd4dcecc362b5e0baa1 (diff) | |
parent | 12f79be93d94698778ff2b3f921073fc5f6780d6 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
Pull pile 2 of execve and kernel_thread unification work from Al Viro:
"Stuff in there: kernel_thread/kernel_execve/sys_execve conversions for
several more architectures plus assorted signal fixes and cleanups.
There'll be more (in particular, real fixes for the alpha
do_notify_resume() irq mess)..."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (43 commits)
alpha: don't open-code trace_report_syscall_{enter,exit}
Uninclude linux/freezer.h
m32r: trim masks
avr32: trim masks
tile: don't bother with SIGTRAP in setup_frame
microblaze: don't bother with SIGTRAP in setup_rt_frame()
mn10300: don't bother with SIGTRAP in setup_frame()
frv: no need to raise SIGTRAP in setup_frame()
x86: get rid of duplicate code in case of CONFIG_VM86
unicore32: remove pointless test
h8300: trim _TIF_WORK_MASK
parisc: decide whether to go to slow path (tracesys) based on thread flags
parisc: don't bother looping in do_signal()
parisc: fix double restarts
bury the rest of TIF_IRET
sanitize tsk_is_polling()
bury _TIF_RESTORE_SIGMASK
unicore32: unobfuscate _TIF_WORK_MASK
mips: NOTIFY_RESUME is not needed in TIF masks
mips: merge the identical "return from syscall" per-ABI code
...
Conflicts:
arch/arm/include/asm/thread_info.h
Diffstat (limited to 'arch/x86/kernel/entry_32.S')
-rw-r--r-- | arch/x86/kernel/entry_32.S | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 8f9ed1afde8f..2c6340796fe9 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
@@ -622,6 +622,10 @@ work_notifysig: # deal with pending signals and | |||
622 | movl %esp, %eax | 622 | movl %esp, %eax |
623 | jne work_notifysig_v86 # returning to kernel-space or | 623 | jne work_notifysig_v86 # returning to kernel-space or |
624 | # vm86-space | 624 | # vm86-space |
625 | 1: | ||
626 | #else | ||
627 | movl %esp, %eax | ||
628 | #endif | ||
625 | TRACE_IRQS_ON | 629 | TRACE_IRQS_ON |
626 | ENABLE_INTERRUPTS(CLBR_NONE) | 630 | ENABLE_INTERRUPTS(CLBR_NONE) |
627 | movb PT_CS(%esp), %bl | 631 | movb PT_CS(%esp), %bl |
@@ -632,24 +636,15 @@ work_notifysig: # deal with pending signals and | |||
632 | call do_notify_resume | 636 | call do_notify_resume |
633 | jmp resume_userspace | 637 | jmp resume_userspace |
634 | 638 | ||
639 | #ifdef CONFIG_VM86 | ||
635 | ALIGN | 640 | ALIGN |
636 | work_notifysig_v86: | 641 | work_notifysig_v86: |
637 | pushl_cfi %ecx # save ti_flags for do_notify_resume | 642 | pushl_cfi %ecx # save ti_flags for do_notify_resume |
638 | call save_v86_state # %eax contains pt_regs pointer | 643 | call save_v86_state # %eax contains pt_regs pointer |
639 | popl_cfi %ecx | 644 | popl_cfi %ecx |
640 | movl %eax, %esp | 645 | movl %eax, %esp |
641 | #else | 646 | jmp 1b |
642 | movl %esp, %eax | ||
643 | #endif | 647 | #endif |
644 | TRACE_IRQS_ON | ||
645 | ENABLE_INTERRUPTS(CLBR_NONE) | ||
646 | movb PT_CS(%esp), %bl | ||
647 | andb $SEGMENT_RPL_MASK, %bl | ||
648 | cmpb $USER_RPL, %bl | ||
649 | jb resume_kernel | ||
650 | xorl %edx, %edx | ||
651 | call do_notify_resume | ||
652 | jmp resume_userspace | ||
653 | END(work_pending) | 648 | END(work_pending) |
654 | 649 | ||
655 | # perform syscall exit tracing | 650 | # perform syscall exit tracing |