|
@@ -316,7 +316,6 @@ ret_from_exception:
|
|
|
preempt_stop(CLBR_ANY)
|
|
|
ret_from_intr:
|
|
|
GET_THREAD_INFO(%ebp)
|
|
|
-resume_userspace_sig:
|
|
|
#ifdef CONFIG_VM86
|
|
|
movl PT_EFLAGS(%esp), %eax # mix EFLAGS and CS
|
|
|
movb PT_CS(%esp), %al
|
|
@@ -615,9 +614,13 @@ work_notifysig: # deal with pending signals and
|
|
|
# vm86-space
|
|
|
TRACE_IRQS_ON
|
|
|
ENABLE_INTERRUPTS(CLBR_NONE)
|
|
|
+ movb PT_CS(%esp), %bl
|
|
|
+ andb $SEGMENT_RPL_MASK, %bl
|
|
|
+ cmpb $USER_RPL, %bl
|
|
|
+ jb resume_kernel
|
|
|
xorl %edx, %edx
|
|
|
call do_notify_resume
|
|
|
- jmp resume_userspace_sig
|
|
|
+ jmp resume_userspace
|
|
|
|
|
|
ALIGN
|
|
|
work_notifysig_v86:
|
|
@@ -630,9 +633,13 @@ work_notifysig_v86:
|
|
|
#endif
|
|
|
TRACE_IRQS_ON
|
|
|
ENABLE_INTERRUPTS(CLBR_NONE)
|
|
|
+ movb PT_CS(%esp), %bl
|
|
|
+ andb $SEGMENT_RPL_MASK, %bl
|
|
|
+ cmpb $USER_RPL, %bl
|
|
|
+ jb resume_kernel
|
|
|
xorl %edx, %edx
|
|
|
call do_notify_resume
|
|
|
- jmp resume_userspace_sig
|
|
|
+ jmp resume_userspace
|
|
|
END(work_pending)
|
|
|
|
|
|
# perform syscall exit tracing
|