Medium · published March 6, 2025
In the Linux kernel, the following vulnerability has been resolved:
OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized
If a driver calls dev_pm_opp_find_bw_ceil/floor() the retrieve bandwidth
from the OPP table but the bandwidth table was not created because the
interconnect properties were missing in the OPP consumer node, the
kernel will crash with:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004
...
pc : _read_bw+0x8/0x10
lr : _opp_table_find_key+0x9c/0x174
...
Call trace:
_read_bw+0x8/0x10 (P)
_opp_table_find_key+0x9c/0x174 (L)
_find_key+0x98/0x168
dev_pm_opp_find_bw_ceil+0x50/0x88
...
In order to fix the crash, create an assert function to check
if the bandwidth table was created before trying to get a
bandwidth with _read_bw().
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 6.0, < 6.1.129 | 6.1.129 |
| linux/linux_kernel | ≥ 6.2, < 6.6.76 | 6.6.76 |
| linux/linux_kernel | ≥ 6.7, < 6.12.13 | 6.12.13 |
| linux/linux_kernel | ≥ 6.13, < 6.13.2 | 6.13.2 |