[Public]
> -----Original Message-----
> From: Charles Han <[email protected]>
> Sent: Thursday, March 27, 2025 12:05 AM
> To: Feng, Kenneth <[email protected]>; Deucher, Alexander
> <[email protected]>; Koenig, Christian
> <[email protected]>; [email protected]; [email protected];
> [email protected]; Huang, Tim <[email protected]>; Zhang, Jesse(Jie)
> <[email protected]>; [email protected]; Huang, Ray
> <[email protected]>; [email protected]; [email protected]
> Cc: [email protected]; [email protected]; Charles
> Han
> <[email protected]>
> Subject: [PATCH] drm/amd/pp: Fix potential NULL pointer dereference in
> atomctrl_initialize_mc_reg_table
>
> The function atomctrl_initialize_mc_reg_table() and
> atomctrl_initialize_mc_reg_table_v2_2() does not check the return value of
> smu_atom_get_data_table(). If smu_atom_get_data_table() fails to retrieve
> vram_info, it returns NULL which is later dereferenced.
>
> Fixes: b3892e2bb519 ("drm/amd/pp: Use atombios api directly in powerplay
> (v2)")
> Fixes: 5f92b48cf62c ("drm/amd/pm: add mc register table initialization")
> Signed-off-by: Charles Han <[email protected]>
Applied. Thanks!
Alex
> ---
> drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c
> b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c
> index 4bd92fd782be..8d40ed0f0e83 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c
> @@ -143,6 +143,10 @@ int atomctrl_initialize_mc_reg_table(
> vram_info = (ATOM_VRAM_INFO_HEADER_V2_1 *)
> smu_atom_get_data_table(hwmgr->adev,
> GetIndexIntoMasterTable(DATA, VRAM_Info), &size,
> &frev, &crev);
> + if (!vram_info) {
> + pr_err("Could not retrieve the VramInfo table!");
> + return -EINVAL;
> + }
>
> if (module_index >= vram_info->ucNumOfVRAMModule) {
> pr_err("Invalid VramInfo table.");
> @@ -180,6 +184,10 @@ int atomctrl_initialize_mc_reg_table_v2_2(
> vram_info = (ATOM_VRAM_INFO_HEADER_V2_2 *)
> smu_atom_get_data_table(hwmgr->adev,
> GetIndexIntoMasterTable(DATA, VRAM_Info), &size,
> &frev, &crev);
> + if (!vram_info) {
> + pr_err("Could not retrieve the VramInfo table!");
> + return -EINVAL;
> + }
>
> if (module_index >= vram_info->ucNumOfVRAMModule) {
> pr_err("Invalid VramInfo table.");
> --
> 2.43.0