|
@@ -425,8 +425,8 @@ sysenter_do_call:
|
|
cmpl $(NR_syscalls), %eax
|
|
cmpl $(NR_syscalls), %eax
|
|
jae sysenter_badsys
|
|
jae sysenter_badsys
|
|
call *sys_call_table(,%eax,4)
|
|
call *sys_call_table(,%eax,4)
|
|
- movl %eax,PT_EAX(%esp)
|
|
|
|
sysenter_after_call:
|
|
sysenter_after_call:
|
|
|
|
+ movl %eax,PT_EAX(%esp)
|
|
LOCKDEP_SYS_EXIT
|
|
LOCKDEP_SYS_EXIT
|
|
DISABLE_INTERRUPTS(CLBR_ANY)
|
|
DISABLE_INTERRUPTS(CLBR_ANY)
|
|
TRACE_IRQS_OFF
|
|
TRACE_IRQS_OFF
|
|
@@ -502,6 +502,7 @@ ENTRY(system_call)
|
|
jae syscall_badsys
|
|
jae syscall_badsys
|
|
syscall_call:
|
|
syscall_call:
|
|
call *sys_call_table(,%eax,4)
|
|
call *sys_call_table(,%eax,4)
|
|
|
|
+syscall_after_call:
|
|
movl %eax,PT_EAX(%esp) # store the return value
|
|
movl %eax,PT_EAX(%esp) # store the return value
|
|
syscall_exit:
|
|
syscall_exit:
|
|
LOCKDEP_SYS_EXIT
|
|
LOCKDEP_SYS_EXIT
|
|
@@ -675,12 +676,12 @@ syscall_fault:
|
|
END(syscall_fault)
|
|
END(syscall_fault)
|
|
|
|
|
|
syscall_badsys:
|
|
syscall_badsys:
|
|
- movl $-ENOSYS,PT_EAX(%esp)
|
|
|
|
- jmp syscall_exit
|
|
|
|
|
|
+ movl $-ENOSYS,%eax
|
|
|
|
+ jmp syscall_after_call
|
|
END(syscall_badsys)
|
|
END(syscall_badsys)
|
|
|
|
|
|
sysenter_badsys:
|
|
sysenter_badsys:
|
|
- movl $-ENOSYS,PT_EAX(%esp)
|
|
|
|
|
|
+ movl $-ENOSYS,%eax
|
|
jmp sysenter_after_call
|
|
jmp sysenter_after_call
|
|
END(syscall_badsys)
|
|
END(syscall_badsys)
|
|
CFI_ENDPROC
|
|
CFI_ENDPROC
|