Qian Cai reported a boot crash on arm64 systems, caused by: 0fb3978b0aac ("sched/numa: Fix NUMA topology for systems with CPU-less nodes") The bug is that node_state() must be supplied a valid node_states[] array index, but in task_numa_placement() the max_nid search can fail with NUMA_NO_NODE, which is not a valid index. Fix it by checking that max_nid is a valid index. [ mingo: Added changelog. ]
Showing the changes to kernel (1 of 1 file). Show all
Unified · Split
| @@ -2437,7 +2437,7 @@ static void task_numa_placement(struct task_struct *p) · 2436 unmodified lines | ||
| 2437 | 2437 | } |
| 2438 | 2438 | |
| 2439 | 2439 | /* Cannot migrate task to CPU-less node */ |
| 2440 | − if (!node_state(max_nid, N_CPU)) { | |
| 2440 | + if (max_nid != NUMA_NO_NODE && !node_state(max_nid, N_CPU)) { | |
| 2441 | 2441 | int near_nid = max_nid; |
| 2442 | 2442 | int distance, near_distance = INT_MAX; |
| 2443 | 2443 | |