Commit b44b9bc
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().
Fixes: add1dc0 ("OPP: Use generic key finding helpers for bandwidth key")
Signed-off-by: Neil Armstrong <[email protected]>
Signed-off-by: Viresh Kumar <[email protected]>1 parent d659bc6 commit b44b9bc
1 file changed
+13
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
119 | 128 | | |
120 | 129 | | |
121 | 130 | | |
| |||
915 | 924 | | |
916 | 925 | | |
917 | 926 | | |
918 | | - | |
| 927 | + | |
| 928 | + | |
919 | 929 | | |
920 | 930 | | |
921 | 931 | | |
| |||
946 | 956 | | |
947 | 957 | | |
948 | 958 | | |
949 | | - | |
| 959 | + | |
| 960 | + | |
950 | 961 | | |
951 | 962 | | |
952 | 963 | | |
| |||
0 commit comments