| From b194489fd206dd6c89b30a5ba68eebc6b22f3e13 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 2 Dec 2024 11:00:43 +0300 |
| Subject: drm/amdgpu: Fix potential NULL pointer dereference in |
| atomctrl_get_smc_sclk_range_table |
| |
| From: Ivan Stepchenko <sid@itb.spb.ru> |
| |
| [ Upstream commit 357445e28ff004d7f10967aa93ddb4bffa5c3688 ] |
| |
| The function atomctrl_get_smc_sclk_range_table() does not check the return |
| value of smu_atom_get_data_table(). If smu_atom_get_data_table() fails to |
| retrieve SMU_Info table, it returns NULL which is later dereferenced. |
| |
| Found by Linux Verification Center (linuxtesting.org) with SVACE. |
| |
| In practice this should never happen as this code only gets called |
| on polaris chips and the vbios data table will always be present on |
| those chips. |
| |
| Fixes: a23eefa2f461 ("drm/amd/powerplay: enable dpm for baffin.") |
| Signed-off-by: Ivan Stepchenko <sid@itb.spb.ru> |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c |
| index cc3b62f733941..1fbd23922082a 100644 |
| --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c |
| +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c |
| @@ -1420,6 +1420,8 @@ int atomctrl_get_smc_sclk_range_table(struct pp_hwmgr *hwmgr, struct pp_atom_ctr |
| GetIndexIntoMasterTable(DATA, SMU_Info), |
| &size, &frev, &crev); |
| |
| + if (!psmu_info) |
| + return -EINVAL; |
| |
| for (i = 0; i < psmu_info->ucSclkEntryNum; i++) { |
| table->entry[i].ucVco_setting = psmu_info->asSclkFcwRangeEntry[i].ucVco_setting; |
| -- |
| 2.39.5 |
| |