Patch "drm/amdgpu: Fix variable 'mca_funcs' dereferenced before NULL check in 'amdgpu_mca_smu_get_mca_entry()'" has been added to the 6.7-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/amdgpu: Fix variable 'mca_funcs' dereferenced before NULL check in 'amdgpu_mca_smu_get_mca_entry()'

to the 6.7-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-amdgpu-fix-variable-mca_funcs-dereferenced-befor.patch
and it can be found in the queue-6.7 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 5d7b8ca9c3c1cb2ab5919a0eace82382b3e77a1b
Author: Srinivasan Shanmugam <srinivasan.shanmugam@xxxxxxx>
Date:   Wed Jan 3 22:05:16 2024 +0530

    drm/amdgpu: Fix variable 'mca_funcs' dereferenced before NULL check in 'amdgpu_mca_smu_get_mca_entry()'
    
    [ Upstream commit 4f32504a2f85a7b40fe149436881381f48e9c0c0 ]
    
    Fixes the below:
    
    drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c:377 amdgpu_mca_smu_get_mca_entry() warn: variable dereferenced before check 'mca_funcs' (see line 368)
    
    357 int amdgpu_mca_smu_get_mca_entry(struct amdgpu_device *adev,
                                         enum amdgpu_mca_error_type type,
    358                                  int idx, struct mca_bank_entry *entry)
    359 {
    360         const struct amdgpu_mca_smu_funcs *mca_funcs =
                                                    adev->mca.mca_funcs;
    361         int count;
    362
    363         switch (type) {
    364         case AMDGPU_MCA_ERROR_TYPE_UE:
    365                 count = mca_funcs->max_ue_count;
    
    mca_funcs is dereferenced here.
    
    366                 break;
    367         case AMDGPU_MCA_ERROR_TYPE_CE:
    368                 count = mca_funcs->max_ce_count;
    
    mca_funcs is dereferenced here.
    
    369                 break;
    370         default:
    371                 return -EINVAL;
    372         }
    373
    374         if (idx >= count)
    375                 return -EINVAL;
    376
    377         if (mca_funcs && mca_funcs->mca_get_mca_entry)
                    ^^^^^^^^^
    
    Checked too late!
    
    Cc: Yang Wang <kevinyang.wang@xxxxxxx>
    Cc: Hawking Zhang <Hawking.Zhang@xxxxxxx>
    Cc: Christian König <christian.koenig@xxxxxxx>
    Cc: Alex Deucher <alexander.deucher@xxxxxxx>
    Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@xxxxxxx>
    Reviewed-by: Yang Wang <kevinyang.wang@xxxxxxx>
    Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
index cf33eb219e25..061d88f4480d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
@@ -351,6 +351,9 @@ int amdgpu_mca_smu_get_mca_entry(struct amdgpu_device *adev, enum amdgpu_mca_err
 	const struct amdgpu_mca_smu_funcs *mca_funcs = adev->mca.mca_funcs;
 	int count;
 
+	if (!mca_funcs || !mca_funcs->mca_get_mca_entry)
+		return -EOPNOTSUPP;
+
 	switch (type) {
 	case AMDGPU_MCA_ERROR_TYPE_UE:
 		count = mca_funcs->max_ue_count;
@@ -365,10 +368,7 @@ int amdgpu_mca_smu_get_mca_entry(struct amdgpu_device *adev, enum amdgpu_mca_err
 	if (idx >= count)
 		return -EINVAL;
 
-	if (mca_funcs && mca_funcs->mca_get_mca_entry)
-		return mca_funcs->mca_get_mca_entry(adev, type, idx, entry);
-
-	return -EOPNOTSUPP;
+	return mca_funcs->mca_get_mca_entry(adev, type, idx, entry);
 }
 
 #if defined(CONFIG_DEBUG_FS)




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux