Skip to content

Commit 86a54e4

Browse files
rahul19kumar8alexdeucher
authored andcommitted
drm/amdgpu: Use kmalloc_array() instead of kmalloc()
Documentation/process/deprecated.rst recommends against the use of kmalloc with dynamic size calculations due to the risk of overflow and smaller allocation being made than the caller was expecting. Replace kmalloc() with kmalloc_array() in amdgpu_amdkfd_gfx_v10.c, amdgpu_amdkfd_gfx_v10_3.c, amdgpu_amdkfd_gfx_v11.c and amdgpu_amdkfd_gfx_v12.c to make the intended allocation size clearer and avoid potential overflow issues. Suggested-by: Felix Kuehling <felix.kuehling@amd.com> Signed-off-by: Rahul Kumar <rk0006818@gmail.com> Signed-off-by: Felix Kuehling <felix.kuehling@amd.com> Reviewed-by: Felix Kuehling <felix.kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 2f9c638 commit 86a54e4

4 files changed

Lines changed: 8 additions & 8 deletions

File tree

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ static int kgd_hqd_dump(struct amdgpu_device *adev,
352352
(*dump)[i++][1] = RREG32_SOC15_IP(GC, addr); \
353353
} while (0)
354354

355-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
355+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
356356
if (*dump == NULL)
357357
return -ENOMEM;
358358

@@ -449,7 +449,7 @@ static int kgd_hqd_sdma_dump(struct amdgpu_device *adev,
449449
#undef HQD_N_REGS
450450
#define HQD_N_REGS (19+6+7+10)
451451

452-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
452+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
453453
if (*dump == NULL)
454454
return -ENOMEM;
455455

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10_3.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ static int hqd_dump_v10_3(struct amdgpu_device *adev,
338338
(*dump)[i++][1] = RREG32_SOC15_IP(GC, addr); \
339339
} while (0)
340340

341-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
341+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
342342
if (*dump == NULL)
343343
return -ENOMEM;
344344

@@ -435,7 +435,7 @@ static int hqd_sdma_dump_v10_3(struct amdgpu_device *adev,
435435
#undef HQD_N_REGS
436436
#define HQD_N_REGS (19+6+7+12)
437437

438-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
438+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
439439
if (*dump == NULL)
440440
return -ENOMEM;
441441

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ static int hqd_dump_v11(struct amdgpu_device *adev,
323323
(*dump)[i++][1] = RREG32(addr); \
324324
} while (0)
325325

326-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
326+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
327327
if (*dump == NULL)
328328
return -ENOMEM;
329329

@@ -420,7 +420,7 @@ static int hqd_sdma_dump_v11(struct amdgpu_device *adev,
420420
#undef HQD_N_REGS
421421
#define HQD_N_REGS (7+11+1+12+12)
422422

423-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
423+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
424424
if (*dump == NULL)
425425
return -ENOMEM;
426426

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v12.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ static int hqd_dump_v12(struct amdgpu_device *adev,
115115
(*dump)[i++][1] = RREG32(addr); \
116116
} while (0)
117117

118-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
118+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
119119
if (*dump == NULL)
120120
return -ENOMEM;
121121

@@ -146,7 +146,7 @@ static int hqd_sdma_dump_v12(struct amdgpu_device *adev,
146146
#undef HQD_N_REGS
147147
#define HQD_N_REGS (last_reg - first_reg + 1)
148148

149-
*dump = kmalloc(HQD_N_REGS*2*sizeof(uint32_t), GFP_KERNEL);
149+
*dump = kmalloc_array(HQD_N_REGS, sizeof(**dump), GFP_KERNEL);
150150
if (*dump == NULL)
151151
return -ENOMEM;
152152

0 commit comments

Comments
 (0)