From: Hawking Zhang <[email protected]>

UMC node_inst_num can exceed 32, causing
(1 << node_inst_num) to shift a 32-bit int
out of bounds

Signed-off-by: Hawking Zhang <[email protected]>
Reviewed-by: Likun Gao <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index 79fc224687039..3a03e024ba443 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -793,7 +793,7 @@ static void amdgpu_discovery_read_from_harvest_table(struct 
amdgpu_device *adev,
        struct harvest_table *harvest_info;
        u16 offset;
        int i;
-       uint32_t umc_harvest_config = 0;
+       u64 umc_harvest_config = 0;
 
        if (amdgpu_discovery_get_table_info(adev, &info, HARVEST_INFO))
                return;
@@ -850,7 +850,7 @@ static void amdgpu_discovery_read_from_harvest_table(struct 
amdgpu_device *adev,
                }
        }
 
-       adev->umc.active_mask = ((1 << adev->umc.node_inst_num) - 1) &
+       adev->umc.active_mask = ((1ULL << adev->umc.node_inst_num) - 1ULL) &
                                ~umc_harvest_config;
 }
 
-- 
2.53.0

Reply via email to