Skip to content

Commit

Permalink
[PATCH] x86_64: Call do_notify_resume unconditionally in entry.S
Browse files Browse the repository at this point in the history
This removes some unnecessary code in the assembly files.

Matches i386 behaviour.

In addition don't clear the work check mask after work has been done.
This fixes some theoretical signal/other event losses.

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed Apr 16, 2005
1 parent 36c1104 commit 11b854b
Showing 1 changed file with 8 additions and 18 deletions.
26 changes: 8 additions & 18 deletions arch/x86_64/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ ENTRY(system_call)
*/
.globl ret_from_sys_call
ret_from_sys_call:
movl $_TIF_WORK_MASK,%edi
movl $_TIF_ALLWORK_MASK,%edi
/* edi: flagmask */
sysret_check:
GET_THREAD_INFO(%rcx)
Expand All @@ -223,18 +223,13 @@ sysret_careful:
jmp sysret_check

/* Handle a signal */
/* edx: work flags (arg3) */
sysret_signal:
sti
testl $(_TIF_SIGPENDING|_TIF_NOTIFY_RESUME|_TIF_SINGLESTEP),%edx
jz 1f

/* Really a signal */
/* edx: work flags (arg3) */
leaq do_notify_resume(%rip),%rax
leaq -ARGOFFSET(%rsp),%rdi # &pt_regs -> arg1
xorl %esi,%esi # oldset -> arg2
call ptregscall_common
1: movl $_TIF_NEED_RESCHED,%edi
jmp sysret_check

/* Do syscall tracing */
Expand Down Expand Up @@ -490,8 +485,6 @@ retint_careful:
jmp retint_check

retint_signal:
testl $(_TIF_SIGPENDING|_TIF_NOTIFY_RESUME|_TIF_SINGLESTEP),%edx
jz retint_swapgs
sti
SAVE_REST
movq $-1,ORIG_RAX(%rsp)
Expand All @@ -500,7 +493,6 @@ retint_signal:
call do_notify_resume
RESTORE_REST
cli
movl $_TIF_NEED_RESCHED,%edi
GET_THREAD_INFO(%rcx)
jmp retint_check

Expand Down Expand Up @@ -829,21 +821,19 @@ paranoid_userspace:
cli
GET_THREAD_INFO(%rcx)
movl threadinfo_flags(%rcx),%edx
testl $_TIF_WORK_MASK,%edx
jz paranoid_swapgs
testl $_TIF_NEED_RESCHED,%edx
jnz paranoid_resched
testl $(_TIF_SIGPENDING|_TIF_NOTIFY_RESUME|_TIF_SINGLESTEP),%edx
jnz paranoid_signal
jmp paranoid_swapgs
paranoid_resched:
sti
call schedule
jmp paranoid_exit
paranoid_signal:
sti
xorl %esi,%esi /* oldset */
movq %rsp,%rdi /* &pt_regs */
call do_notify_resume
jmp paranoid_exit
paranoid_resched:
sti
call schedule
jmp paranoid_exit
CFI_ENDPROC

ENTRY(int3)
Expand Down

0 comments on commit 11b854b

Please sign in to comment.