From: Sunil Khatri Date: Wed, 9 Oct 2024 08:43:35 +0000 (+0530) Subject: drm/amdgpu: validate sw_init before function call X-Git-Tag: v6.13-rc1~122^2~15^2~47 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=df6e463d8f020b17c2494b6cc85d218af466e9f9;p=thirdparty%2Fkernel%2Flinux.git drm/amdgpu: validate sw_init before function call Before making a function call to sw_init, validate the function pointer like we do in late_init. Signed-off-by: Sunil Khatri Reviewed-by: Christian König Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 928b11ab56c14..e923aef78dfa2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -2851,11 +2851,13 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) for (i = 0; i < adev->num_ip_blocks; i++) { if (!adev->ip_blocks[i].status.valid) continue; - r = adev->ip_blocks[i].version->funcs->sw_init(&adev->ip_blocks[i]); - if (r) { - DRM_ERROR("sw_init of IP block <%s> failed %d\n", - adev->ip_blocks[i].version->funcs->name, r); - goto init_failed; + if (adev->ip_blocks[i].version->funcs->sw_init) { + r = adev->ip_blocks[i].version->funcs->sw_init(&adev->ip_blocks[i]); + if (r) { + DRM_ERROR("sw_init of IP block <%s> failed %d\n", + adev->ip_blocks[i].version->funcs->name, r); + goto init_failed; + } } adev->ip_blocks[i].status.sw = true;