[lvc-project] [PATCH] drm/amd/pm: check return value of amdgpu_irq_add_id()

2024-02-05 Thread Igor Artemiev
amdgpu_irq_ad_id() may fail and the irq handlers will not be registered.
This patch adds error code check.

Found by Linux Verification Center (linuxtesting.org).

Signed-off-by: Igor Artemiev 
---
 .../gpu/drm/amd/pm/powerplay/hwmgr/smu_helper.c| 14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu_helper.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu_helper.c
index 79a566f3564a..9cb965479dd8 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu_helper.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu_helper.c
@@ -647,26 +647,34 @@ int smu9_register_irq_handlers(struct pp_hwmgr *hwmgr)
 {
struct amdgpu_irq_src *source =
kzalloc(sizeof(struct amdgpu_irq_src), GFP_KERNEL);
+   int ret;
 
if (!source)
return -ENOMEM;
 
source->funcs = _irq_funcs;
 
-   amdgpu_irq_add_id((struct amdgpu_device *)(hwmgr->adev),
+   ret = amdgpu_irq_add_id((struct amdgpu_device *)(hwmgr->adev),
SOC15_IH_CLIENTID_THM,
THM_9_0__SRCID__THM_DIG_THERM_L2H,
source);
-   amdgpu_irq_add_id((struct amdgpu_device *)(hwmgr->adev),
+   if (ret)
+   return ret;
+
+   ret = amdgpu_irq_add_id((struct amdgpu_device *)(hwmgr->adev),
SOC15_IH_CLIENTID_THM,
THM_9_0__SRCID__THM_DIG_THERM_H2L,
source);
+   if (ret)
+   return ret;
 
/* Register CTF(GPIO_19) interrupt */
-   amdgpu_irq_add_id((struct amdgpu_device *)(hwmgr->adev),
+   ret = amdgpu_irq_add_id((struct amdgpu_device *)(hwmgr->adev),
SOC15_IH_CLIENTID_ROM_SMUIO,
SMUIO_9_0__SRCID__SMUIO_GPIO19,
source);
+   if (ret)
+   return ret;
 
return 0;
 }
-- 
2.39.2



Re: [lvc-project] [PATCH] drm/amd/pm: check return value of amdgpu_irq_add_id()

2024-02-05 Thread Alexey Khoroshilov
On 05.02.2024 15:25, Igor Artemiev wrote:
> amdgpu_irq_ad_id() may fail and the irq handlers will not be registered.
> This patch adds error code check.

But what is about deallocation of already allocated memory?

--
Alexey