CVE-2022-50103
Severity CVSS v4.0:
Pending analysis
Type:
CWE-125
Out-of-bounds Read
Publication date:
18/06/2025
Last modified:
19/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
sched, cpuset: Fix dl_cpu_busy() panic due to empty cs->cpus_allowed<br />
<br />
With cgroup v2, the cpuset&#39;s cpus_allowed mask can be empty indicating<br />
that the cpuset will just use the effective CPUs of its parent. So<br />
cpuset_can_attach() can call task_can_attach() with an empty mask.<br />
This can lead to cpumask_any_and() returns nr_cpu_ids causing the call<br />
to dl_bw_of() to crash due to percpu value access of an out of bound<br />
CPU value. For example:<br />
<br />
[80468.182258] BUG: unable to handle page fault for address: ffffffff8b6648b0<br />
:<br />
[80468.191019] RIP: 0010:dl_cpu_busy+0x30/0x2b0<br />
:<br />
[80468.207946] Call Trace:<br />
[80468.208947] cpuset_can_attach+0xa0/0x140<br />
[80468.209953] cgroup_migrate_execute+0x8c/0x490<br />
[80468.210931] cgroup_update_dfl_csses+0x254/0x270<br />
[80468.211898] cgroup_subtree_control_write+0x322/0x400<br />
[80468.212854] kernfs_fop_write_iter+0x11c/0x1b0<br />
[80468.213777] new_sync_write+0x11f/0x1b0<br />
[80468.214689] vfs_write+0x1eb/0x280<br />
[80468.215592] ksys_write+0x5f/0xe0<br />
[80468.216463] do_syscall_64+0x5c/0x80<br />
[80468.224287] entry_SYSCALL_64_after_hwframe+0x44/0xae<br />
<br />
Fix that by using effective_cpus instead. For cgroup v1, effective_cpus<br />
is the same as cpus_allowed. For v2, effective_cpus is the real cpumask<br />
to be used by tasks within the cpuset anyway.<br />
<br />
Also update task_can_attach()&#39;s 2nd argument name to cs_effective_cpus to<br />
reflect the change. In addition, a check is added to task_can_attach()<br />
to guard against the possibility that cpumask_any_and() may return a<br />
value >= nr_cpu_ids.
Impact
Base Score 3.x
7.10
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.19 (including) | 5.10.137 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.61 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 5.18.18 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.19 (including) | 5.19.2 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/147f66d22f58712dce7ccdd6a1f6cb3ee8042df4
- https://git.kernel.org/stable/c/336626564b58071b8980a4e6a31a8f5d92705d9b
- https://git.kernel.org/stable/c/357f3f0e522a6ce1ce4a571cb780d9861d53bec7
- https://git.kernel.org/stable/c/b6e8d40d43ae4dec00c8fea2593eeea3114b8f44
- https://git.kernel.org/stable/c/f56607b44c9896e51678a7e8cdd3a5479f4b4548



