Peter Zijlstra
ef1ea98c8f
task_work: Fix NMI race condition
__schedule()
// disable irqs
<NMI>
task_work_add(current, work, TWA_NMI_CURRENT);
</NMI>
// current = next;
// enable irqs
<IRQ>
task_work_set_notify_irq()
test_and_set_tsk_thread_flag(current,
TIF_NOTIFY_RESUME); // wrong task!
</IRQ>
// original task skips task work on its next return to user (or exit!)
Fixes: 466e4d801cd4 ("task_work: Add TWA_NMI_CURRENT as an additional notify mode.")
Reported-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Link: https://patch.msgid.link/20250924080118.425949403@infradead.org
2025-10-29 10:29:54 +01:00
..
2025-10-10 10:10:08 -07:00
2025-10-04 11:28:45 -07:00
2025-09-24 14:29:14 -07:00
2025-09-20 21:19:09 +01:00
2025-10-03 17:41:12 -07:00
2025-10-07 08:40:15 -07:00
2025-10-02 18:18:33 -07:00
2025-09-30 16:07:10 -07:00
2025-04-30 21:53:35 +02:00
2025-09-30 15:55:25 -07:00
2025-10-02 08:31:44 -07:00
2025-05-14 13:16:24 +02:00
2025-09-29 09:42:35 +02:00
2025-09-24 14:29:14 -07:00
2025-09-29 12:54:01 +02:00
2025-10-04 11:13:11 -07:00
2025-10-07 08:40:15 -07:00
2025-10-02 18:18:33 -07:00
2025-10-02 15:17:01 -07:00
2025-10-11 16:06:04 -07:00
2025-07-31 10:20:11 -04:00
2025-06-24 20:30:37 +09:00
2025-09-27 20:13:56 -04:00
2025-09-23 12:37:35 +02:00
2025-10-03 10:19:44 -07:00
2025-09-23 12:37:35 +02:00
2025-09-10 19:55:00 -04:00
2025-08-30 10:15:28 -04:00
2025-09-30 08:22:16 -07:00
2025-08-30 10:15:30 -04:00
2025-03-07 22:03:09 -06:00
2025-07-31 18:23:53 -07:00
2025-03-04 18:44:29 -08:00
2025-08-06 22:48:12 +02:00
2025-09-13 17:32:55 -07:00
2025-09-13 17:32:55 -07:00
2025-05-21 10:48:21 -07:00
2025-07-19 19:08:23 -07:00
2025-09-01 15:31:34 +02:00
2025-05-27 19:40:33 -07:00
2025-09-21 14:22:00 -07:00
2025-10-02 18:44:54 -07:00
2025-09-21 14:22:35 -07:00
2025-08-06 10:23:36 +09:00
2025-09-13 17:32:43 -07:00
2025-02-21 15:05:38 +01:00
2025-03-10 11:54:46 +01:00
2025-09-28 11:36:14 -07:00
2025-07-16 18:34:42 -07:00
2025-02-21 10:25:33 +01:00
2025-02-21 09:20:30 +01:00
2025-09-13 17:32:55 -07:00
2025-09-17 16:25:41 +02:00
2025-09-13 17:32:44 -07:00
2025-09-13 17:32:49 -07:00
2025-03-16 22:30:47 -07:00
2025-09-13 17:32:43 -07:00
2025-10-07 13:48:55 -07:00
2025-08-02 12:01:38 -07:00
2025-08-02 12:01:38 -07:00
2025-07-15 18:45:34 +09:00
2025-07-21 21:40:39 -07:00
2025-08-13 08:34:33 +02:00
2025-10-02 18:44:54 -07:00
2025-09-25 09:23:54 +02:00
2025-09-29 11:20:29 -07:00
2025-09-25 09:23:54 +02:00
2025-09-13 12:11:06 +08:00
2025-09-28 11:36:13 -07:00
2025-08-16 21:47:25 +02:00
2025-09-29 11:20:29 -07:00
2025-09-29 11:20:29 -07:00
2025-05-11 17:48:15 -07:00
2025-04-01 10:06:52 -07:00
2025-07-09 22:57:52 -07:00
2025-09-21 14:22:34 -07:00
2025-09-13 19:51:59 +02:00
2025-09-30 11:11:21 -07:00
2025-08-19 13:51:28 +02:00
2025-09-18 22:21:28 +02:00
2025-06-13 08:47:20 +02:00
2025-09-17 16:25:41 +02:00
2025-03-30 15:44:36 -07:00
2025-07-01 15:02:03 +02:00
2025-08-21 20:09:20 +02:00
2025-10-02 18:44:54 -07:00
2025-04-14 14:13:41 +02:00
2025-07-23 11:56:02 +02:00
2025-10-29 10:29:54 +01:00
2025-08-14 15:26:30 -07:00
2025-03-21 15:30:10 -04:00
2025-08-19 13:38:20 +02:00
2025-08-02 12:01:38 -07:00
2025-09-25 09:23:54 +02:00
2025-09-25 09:23:54 +02:00
2025-09-29 11:20:29 -07:00
2025-09-21 17:44:20 -04:00
2025-05-11 17:54:04 -07:00
2025-03-24 09:52:37 -07:00
2025-07-31 11:28:03 -04:00
2025-09-13 17:32:53 -07:00
2025-09-13 17:32:53 -07:00
2025-09-16 10:33:53 -10:00