Files
linux/kernel
Jens Axboe 3a641a476e sched/fair: Don't NUMA balance for kthreads
[ Upstream commit 18f855e574 ]

Stefano reported a crash with using SQPOLL with io_uring:

  BUG: kernel NULL pointer dereference, address: 00000000000003b0
  CPU: 2 PID: 1307 Comm: io_uring-sq Not tainted 5.7.0-rc7 #11
  RIP: 0010:task_numa_work+0x4f/0x2c0
  Call Trace:
   task_work_run+0x68/0xa0
   io_sq_thread+0x252/0x3d0
   kthread+0xf9/0x130
   ret_from_fork+0x35/0x40

which is task_numa_work() oopsing on current->mm being NULL.

The task work is queued by task_tick_numa(), which checks if current->mm is
NULL at the time of the call. But this state isn't necessarily persistent,
if the kthread is using use_mm() to temporarily adopt the mm of a task.

Change the task_tick_numa() check to exclude kernel threads in general,
as it doesn't make sense to attempt ot balance for kthreads anyway.

Reported-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/865de121-8190-5d30-ece5-3b097dc74431@kernel.dk
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-05-15 17:32:04 +09:00
..
2016-01-22 18:04:28 -05:00
2016-04-04 09:46:47 -04:00
2023-05-15 15:18:40 +09:00
2018-05-01 16:49:34 +00:00
2017-10-12 22:31:24 +02:00
2015-04-12 21:03:31 +02:00
2023-05-15 17:11:11 +09:00
2015-11-23 09:44:58 +01:00
2023-05-12 16:39:07 +09:00
2023-05-15 17:11:06 +09:00
2016-02-16 13:04:58 -05:00
2015-01-17 10:02:23 +13:00
2023-05-15 17:14:27 +09:00
2016-03-01 20:36:56 +01:00
2023-05-12 16:43:35 +09:00
2023-05-15 16:30:15 +09:00
2018-05-09 09:50:20 +02:00
2018-04-03 11:15:30 -07:00
2016-09-22 20:00:36 -05:00
2018-05-09 19:39:28 -07:00
2018-05-09 19:39:28 -07:00