aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/entry_64.S6
-rw-r--r--arch/x86/kernel/signal_32.c3
-rw-r--r--arch/x86/kernel/signal_64.c3
3 files changed, 9 insertions, 3 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 3a058bb16409..e70f3881d7e4 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -283,7 +283,7 @@ sysret_careful:
283sysret_signal: 283sysret_signal:
284 TRACE_IRQS_ON 284 TRACE_IRQS_ON
285 sti 285 sti
286 testl $(_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY),%edx 286 testl $_TIF_DO_NOTIFY_MASK,%edx
287 jz 1f 287 jz 1f
288 288
289 /* Really a signal */ 289 /* Really a signal */
@@ -377,7 +377,7 @@ int_very_careful:
377 jmp int_restore_rest 377 jmp int_restore_rest
378 378
379int_signal: 379int_signal:
380 testl $(_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY),%edx 380 testl $_TIF_DO_NOTIFY_MASK,%edx
381 jz 1f 381 jz 1f
382 movq %rsp,%rdi # &ptregs -> arg1 382 movq %rsp,%rdi # &ptregs -> arg1
383 xorl %esi,%esi # oldset -> arg2 383 xorl %esi,%esi # oldset -> arg2
@@ -603,7 +603,7 @@ retint_careful:
603 jmp retint_check 603 jmp retint_check
604 604
605retint_signal: 605retint_signal:
606 testl $(_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY),%edx 606 testl $_TIF_DO_NOTIFY_MASK,%edx
607 jz retint_swapgs 607 jz retint_swapgs
608 TRACE_IRQS_ON 608 TRACE_IRQS_ON
609 sti 609 sti
diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal_32.c
index 9bdd83022f5f..20f29e4c1d33 100644
--- a/arch/x86/kernel/signal_32.c
+++ b/arch/x86/kernel/signal_32.c
@@ -658,6 +658,9 @@ void do_notify_resume(struct pt_regs *regs, void *_unused,
658 /* deal with pending signal delivery */ 658 /* deal with pending signal delivery */
659 if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)) 659 if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
660 do_signal(regs); 660 do_signal(regs);
661
662 if (thread_info_flags & _TIF_HRTICK_RESCHED)
663 hrtick_resched();
661 664
662 clear_thread_flag(TIF_IRET); 665 clear_thread_flag(TIF_IRET);
663} 666}
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c
index ab086b0357fc..38d806467c0f 100644
--- a/arch/x86/kernel/signal_64.c
+++ b/arch/x86/kernel/signal_64.c
@@ -480,6 +480,9 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
480 /* deal with pending signal delivery */ 480 /* deal with pending signal delivery */
481 if (thread_info_flags & (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK)) 481 if (thread_info_flags & (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK))
482 do_signal(regs); 482 do_signal(regs);
483
484 if (thread_info_flags & _TIF_HRTICK_RESCHED)
485 hrtick_resched();
483} 486}
484 487
485void signal_fault(struct pt_regs *regs, void __user *frame, char *where) 488void signal_fault(struct pt_regs *regs, void __user *frame, char *where)