In the Linux kernel, the following vulnerability has been resolved:
interconnect: Don't access req_list while it's being manipulated
The icc_lock mutex was split into separate icc_lock and icc_bw_lock mutexes in [1] to avoid lockdep splats. However, this didn't adequately protect access to icc_node::req_list.
The icc_set_bw() function will eventually iterate over req_list while only holding icc_bw_lock, but req_list can be modified while only holding icc_lock. This causes races between icc_set_bw(), of_icc_get(), and icc_put().
Example A:
CPU0 CPU1 ---- ---- icc_set_bw(path_a) mutex_lock(&icc_bw_lock); icc_put(path_b) mutex_lock(&icc_lock); aggregate_requests() hlist_for_each_entry(r, ... hlist_del(... <r = invalid pointer>
Example B:
CPU0 CPU1 ---- ---- icc_set_bw(path_a) mutex_lock(&icc_bw_lock); path_b = of_icc_get() of_icc_get_by_index() mutex_lock(&icc_lock); path_find() path_init() aggregate_requests() hlist_for_each_entry(r, ... hlist_add_head(... <r = invalid pointer>
Fix this by ensuring icc_bw_lock is always held before manipulating icc_node::req_list. The additional places icc_bw_lock is held don't perform any memory allocations, so we should still be safe from the original lockdep splats that motivated the separate locks.
[1] commit af42269c3523 ("interconnect: Fix locking for runpm vs reclaim")
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | May 15, 2025 | May 1, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1006-gkeUpgrade linux-image-oem-24.04aUpgrade linux-image-intelUpgrade linux-image-gkeUpgrade linux-image-oracleUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-nvidia-64kUpgrade linux-image-6.8.0-1008-ibmUpgrade linux-image-nvidiaUpgrade linux-image-genericUpgrade linux-image-6.8.0-1007-raspiUpgrade linux-image-6.8.0-1007-intelUpgrade linux-image-gcpUpgrade linux-image-6.8.0-38-genericUpgrade linux-image-6.8.0-1008-oracleUpgrade linux-image-lowlatency-64kUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1011-awsUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1010-gcpUpgrade linux-image-6.8.0-1010-azureUpgrade linux-image-oem-24.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1009-nvidia-64kUpgrade linux-image-6.8.0-1008-oracle-64kUpgrade linux-image-oracle-64kUpgrade linux-image-kvmUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-38-generic-64kUpgrade linux-image-6.8.0-1010-azure-fdeUpgrade linux-image-generic-lpaeUpgrade linux-image-ibm-classicUpgrade linux-image-azureUpgrade linux-image-lowlatencyUpgrade linux-image-ibmUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1009-nvidiaUpgrade linux-image-6.8.0-38-lowlatencyUpgrade linux-image-raspiUpgrade linux-image-awsUpgrade linux-image-6.8.0-1008-oemUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-38-lowlatency-64k | Jul 12, 2024 | May 1, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub