Loading arch/x86/kernel/signal_32.c +8 −0 Original line number Original line Diff line number Diff line Loading @@ -663,6 +663,12 @@ static void do_signal(struct pt_regs *regs) void void do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) { { #if defined(CONFIG_X86_64) && defined(CONFIG_X86_MCE) /* notify userspace of pending MCEs */ if (thread_info_flags & _TIF_MCE_NOTIFY) mce_notify_user(); #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */ /* deal with pending signal delivery */ /* deal with pending signal delivery */ if (thread_info_flags & _TIF_SIGPENDING) if (thread_info_flags & _TIF_SIGPENDING) do_signal(regs); do_signal(regs); Loading @@ -672,7 +678,9 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) tracehook_notify_resume(regs); tracehook_notify_resume(regs); } } #ifdef CONFIG_X86_32 clear_thread_flag(TIF_IRET); clear_thread_flag(TIF_IRET); #endif /* CONFIG_X86_32 */ } } void signal_fault(struct pt_regs *regs, void __user *frame, char *where) void signal_fault(struct pt_regs *regs, void __user *frame, char *where) Loading arch/x86/kernel/signal_64.c +12 −4 Original line number Original line Diff line number Diff line Loading @@ -460,14 +460,18 @@ static void do_signal(struct pt_regs *regs) } } } } void do_notify_resume(struct pt_regs *regs, void *unused, /* __u32 thread_info_flags) * notification of userspace execution resumption * - triggered by the TIF_WORK_MASK flags */ void do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) { { #ifdef CONFIG_X86_MCE #if defined(CONFIG_X86_64) && defined(CONFIG_X86_MCE) /* notify userspace of pending MCEs */ /* notify userspace of pending MCEs */ if (thread_info_flags & _TIF_MCE_NOTIFY) if (thread_info_flags & _TIF_MCE_NOTIFY) mce_notify_user(); mce_notify_user(); #endif /* CONFIG_X86_MCE */ #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */ /* deal with pending signal delivery */ /* deal with pending signal delivery */ if (thread_info_flags & _TIF_SIGPENDING) if (thread_info_flags & _TIF_SIGPENDING) Loading @@ -477,6 +481,10 @@ void do_notify_resume(struct pt_regs *regs, void *unused, clear_thread_flag(TIF_NOTIFY_RESUME); clear_thread_flag(TIF_NOTIFY_RESUME); tracehook_notify_resume(regs); tracehook_notify_resume(regs); } } #ifdef CONFIG_X86_32 clear_thread_flag(TIF_IRET); #endif /* CONFIG_X86_32 */ } } void signal_fault(struct pt_regs *regs, void __user *frame, char *where) void signal_fault(struct pt_regs *regs, void __user *frame, char *where) Loading Loading
arch/x86/kernel/signal_32.c +8 −0 Original line number Original line Diff line number Diff line Loading @@ -663,6 +663,12 @@ static void do_signal(struct pt_regs *regs) void void do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) { { #if defined(CONFIG_X86_64) && defined(CONFIG_X86_MCE) /* notify userspace of pending MCEs */ if (thread_info_flags & _TIF_MCE_NOTIFY) mce_notify_user(); #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */ /* deal with pending signal delivery */ /* deal with pending signal delivery */ if (thread_info_flags & _TIF_SIGPENDING) if (thread_info_flags & _TIF_SIGPENDING) do_signal(regs); do_signal(regs); Loading @@ -672,7 +678,9 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) tracehook_notify_resume(regs); tracehook_notify_resume(regs); } } #ifdef CONFIG_X86_32 clear_thread_flag(TIF_IRET); clear_thread_flag(TIF_IRET); #endif /* CONFIG_X86_32 */ } } void signal_fault(struct pt_regs *regs, void __user *frame, char *where) void signal_fault(struct pt_regs *regs, void __user *frame, char *where) Loading
arch/x86/kernel/signal_64.c +12 −4 Original line number Original line Diff line number Diff line Loading @@ -460,14 +460,18 @@ static void do_signal(struct pt_regs *regs) } } } } void do_notify_resume(struct pt_regs *regs, void *unused, /* __u32 thread_info_flags) * notification of userspace execution resumption * - triggered by the TIF_WORK_MASK flags */ void do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) { { #ifdef CONFIG_X86_MCE #if defined(CONFIG_X86_64) && defined(CONFIG_X86_MCE) /* notify userspace of pending MCEs */ /* notify userspace of pending MCEs */ if (thread_info_flags & _TIF_MCE_NOTIFY) if (thread_info_flags & _TIF_MCE_NOTIFY) mce_notify_user(); mce_notify_user(); #endif /* CONFIG_X86_MCE */ #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */ /* deal with pending signal delivery */ /* deal with pending signal delivery */ if (thread_info_flags & _TIF_SIGPENDING) if (thread_info_flags & _TIF_SIGPENDING) Loading @@ -477,6 +481,10 @@ void do_notify_resume(struct pt_regs *regs, void *unused, clear_thread_flag(TIF_NOTIFY_RESUME); clear_thread_flag(TIF_NOTIFY_RESUME); tracehook_notify_resume(regs); tracehook_notify_resume(regs); } } #ifdef CONFIG_X86_32 clear_thread_flag(TIF_IRET); #endif /* CONFIG_X86_32 */ } } void signal_fault(struct pt_regs *regs, void __user *frame, char *where) void signal_fault(struct pt_regs *regs, void __user *frame, char *where) Loading