Description
In the Linux kernel, the following vulnerability has been resolved: cpu/hotplug: Don't offline the last non-isolated CPU If a system has isolated CPUs via the "isolcpus=" command line parameter, then an attempt to offline the last housekeeping CPU will result in a WARN_ON() when rebuilding the scheduler domains and a subsequent panic due to and unhandled empty CPU mas in partition_sched_domains_locked(). cpuset_hotplug_workfn() rebuild_sched_domains_locked() ndoms = generate_sched_domains(&doms, &attr); cpumask_and(doms[0], top_cpuset.effective_cpus, housekeeping_cpumask(HK_FLAG_DOMAIN)); Thus results in an empty CPU mask which triggers the warning and then the subsequent crash: WARNING: CPU: 4 PID: 80 at kernel/sched/topology.c:2366 build_sched_domains+0x120c/0x1408 Call trace: build_sched_domains+0x120c/0x1408 partition_sched_domains_locked+0x234/0x880 rebuild_sched_domains_locked+0x37c/0x798 rebuild_sched_domains+0x30/0x58 cpuset_hotplug_workfn+0x2a8/0x930 Unable to handle kernel paging request at virtual address fffe80027ab37080 partition_sched_domains_locked+0x318/0x880 rebuild_sched_domains_locked+0x37c/0x798 Aside of the resulting crash, it does not make any sense to offline the last last housekeeping CPU. Prevent this by masking out the non-housekeeping CPUs when selecting a target CPU for initiating the CPU unplug operation via the work queue.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
fea9dd8653ff39ce383c54e747bde4c39289b4ad to < 3410b702354702b500bde10e3cc1f9db8731d908affected07f9e0c9987bf1c4ef57611ad2f789ba68978102 to < 335a47ed71e332c82339d1aec0c7f6caccfcda13affected2b8272ff4a70b866106ae13c36be7ecbef5d5da2 to < 3073f6df783d9d75f7f69f73e16c7ef85d6cfb63affected2b8272ff4a70b866106ae13c36be7ecbef5d5da2 to < 38685e2a0476127db766f81b1c06019ddc4c9ffaaffected9734e4c0c470258c32b6aa5ea7ef8a86506c0909affected6.1.53 to < 6.1.64affected6.5.3 to < 6.5.13affected6.4.16 to < 6.5affected
Linux Linux
Default version status: affected
6.6affected0 to < 6.6unaffected6.1.64 to ≤ 6.1.*unaffected6.5.13 to ≤ 6.5.*unaffected6.6.3 to ≤ 6.6.*unaffected6.7 to ≤ *unaffected