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. ]
Unified · Split
| @@ -2437,7 +2437,7 @@ static void task_numa_placement(struct task_struct *p) · 2436 unmodified lines | |||
| 2437 | } | 2437 | } |
| 2438 | 2438 | ||
| 2439 | /* Cannot migrate task to CPU-less node */ | 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 | int near_nid = max_nid; | 2441 | int near_nid = max_nid; |
| 2442 | int distance, near_distance = INT_MAX; | 2442 | int distance, near_distance = INT_MAX; |
| 2443 | 2443 | ||