hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/arch/x86/entry/common.c
....@@ -134,7 +134,7 @@
134134
135135 #define EXIT_TO_USERMODE_LOOP_FLAGS \
136136 (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_UPROBE | \
137
- _TIF_NEED_RESCHED | _TIF_USER_RETURN_NOTIFY | _TIF_PATCH_PENDING)
137
+ _TIF_NEED_RESCHED_MASK | _TIF_USER_RETURN_NOTIFY | _TIF_PATCH_PENDING)
138138
139139 static void exit_to_usermode_loop(struct pt_regs *regs, u32 cached_flags)
140140 {
....@@ -149,9 +149,16 @@
149149 /* We have work to do. */
150150 local_irq_enable();
151151
152
- if (cached_flags & _TIF_NEED_RESCHED)
152
+ if (cached_flags & _TIF_NEED_RESCHED_MASK)
153153 schedule();
154154
155
+#ifdef ARCH_RT_DELAYS_SIGNAL_SEND
156
+ if (unlikely(current->forced_info.si_signo)) {
157
+ struct task_struct *t = current;
158
+ force_sig_info(t->forced_info.si_signo, &t->forced_info, t);
159
+ t->forced_info.si_signo = 0;
160
+ }
161
+#endif
155162 if (cached_flags & _TIF_UPROBE)
156163 uprobe_notify_resume(regs);
157164