On Mon, May 6, 2024 at 6:22 AM Ma Jun <Jun.Ma2@xxxxxxx> wrote: > > Check the return value of amdgpu_xcp_get_inst_details, otherwise we > may use an uninitialized variable inst_mask > > Signed-off-by: Ma Jun <Jun.Ma2@xxxxxxx> Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > index a0ea6fe8d060..977cde6d1362 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > @@ -623,25 +623,32 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) > switch (type) { > case AMD_IP_BLOCK_TYPE_GFX: > ret = amdgpu_xcp_get_inst_details(xcp, AMDGPU_XCP_GFX, &inst_mask); > + if (ret) > + return ret; > count = hweight32(inst_mask); > break; > case AMD_IP_BLOCK_TYPE_SDMA: > ret = amdgpu_xcp_get_inst_details(xcp, AMDGPU_XCP_SDMA, &inst_mask); > + if (ret) > + return ret; > count = hweight32(inst_mask); > break; > case AMD_IP_BLOCK_TYPE_JPEG: > ret = amdgpu_xcp_get_inst_details(xcp, AMDGPU_XCP_VCN, &inst_mask); > + if (ret) > + return ret; > count = hweight32(inst_mask) * adev->jpeg.num_jpeg_rings; > break; > case AMD_IP_BLOCK_TYPE_VCN: > ret = amdgpu_xcp_get_inst_details(xcp, AMDGPU_XCP_VCN, &inst_mask); > + if (ret) > + return ret; > count = hweight32(inst_mask); > break; > default: > return -EINVAL; > } > - if (ret) > - return ret; > + > return copy_to_user(out, &count, min(size, 4u)) ? -EFAULT : 0; > } > > -- > 2.34.1 >