drm/amdgpu: fix UBSAN array-index-out-of-bounds for ras_block_string[]
authorYang Wang <kevinyang.wang@amd.com>
Tue, 16 Jan 2024 10:58:39 +0000 (18:58 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 18 Jan 2024 20:46:07 +0000 (15:46 -0500)
fix array index out of bounds issue for ras_block_string[] array.

Fixes: 30df05fb74f6 ("drm/amdgpu: Align ras block enum with firmware")
Signed-off-by: Yang Wang <kevinyang.wang@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

index 5063e8d6dff6a079ef0753be3f0033c5bf849a50..bf08a7744a4af2f3c6a3029bf236bb8682eb8054 100644 (file)
@@ -74,6 +74,8 @@ const char *ras_block_string[] = {
        "mca",
        "vcn",
        "jpeg",
+       "ih",
+       "mpio",
 };
 
 const char *ras_mca_block_string[] = {
@@ -95,7 +97,8 @@ const char *get_ras_block_str(struct ras_common_if *ras_block)
        if (!ras_block)
                return "NULL";
 
-       if (ras_block->block >= AMDGPU_RAS_BLOCK_COUNT)
+       if (ras_block->block >= AMDGPU_RAS_BLOCK_COUNT ||
+           ras_block->block >= ARRAY_SIZE(ras_block_string))
                return "OUT OF RANGE";
 
        if (ras_block->block == AMDGPU_RAS_BLOCK__MCA)