From: Hawking Zhang Date: Wed, 28 Jan 2026 10:53:40 +0000 (+0800) Subject: drm/amdgpu: fix shift-out-of-bounds when updating umc active mask X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1394a4926f4bcff0dc6ac6deea5beeb2844297f0;p=thirdparty%2Fkernel%2Flinux.git drm/amdgpu: fix shift-out-of-bounds when updating umc active mask 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 Reviewed-by: Likun Gao Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c index 2669b0346a60b..5f8f0c8416666 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; }