Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/pm: Init pm_attr_list when dpm is disabled

[Why]
In SRIOV multi-vf, dpm is always disabled, and pm_attr_list won't
be initialized. There will be a NULL pointer call trace after
removing the dpm check condition in amdgpu_pm_sysfs_fini.
BUG: kernel NULL pointer dereference, address: 0000000000000000
RIP: 0010:amdgpu_device_attr_remove_groups+0x20/0x90 [amdgpu]
Call Trace:
<TASK>
amdgpu_pm_sysfs_fini+0x2f/0x40 [amdgpu]
amdgpu_device_fini_hw+0xdf/0x290 [amdgpu]

[How]
List pm_attr_list should be initialized when dpm is disabled.

Fixes: a6ad27cec585fe ("drm/amd/pm: Remove redundant check condition")
Signed-off-by: ZhenGuo Yin <zhenguo.yin@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

ZhenGuo Yin and committed by
Alex Deucher
5fa99373 3059cd8c

+2 -2
+2 -2
drivers/gpu/drm/amd/pm/amdgpu_pm.c
··· 3362 3362 if (adev->pm.sysfs_initialized) 3363 3363 return 0; 3364 3364 3365 + INIT_LIST_HEAD(&adev->pm.pm_attr_list); 3366 + 3365 3367 if (adev->pm.dpm_enabled == 0) 3366 3368 return 0; 3367 - 3368 - INIT_LIST_HEAD(&adev->pm.pm_attr_list); 3369 3369 3370 3370 adev->pm.int_hwmon_dev = hwmon_device_register_with_groups(adev->dev, 3371 3371 DRIVER_NAME, adev,