The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <sta...@vger.kernel.org>.

Thanks,
Sasha

------------------ original commit in Linus's tree ------------------

>From 616b39467e816851335277d817ec98b7a9b92758 Mon Sep 17 00:00:00 2001
From: Sohaib Nadeem <sohaib.nad...@amd.com>
Date: Wed, 31 Jan 2024 16:40:37 -0500
Subject: [PATCH] drm/amd/display: fixed integer types and null check locations

[why]:
issues fixed:
- comparison with wider integer type in loop condition which can cause
infinite loops
- pointer dereference before null check

Cc: Mario Limonciello <mario.limoncie...@amd.com>
Cc: Alex Deucher <alexander.deuc...@amd.com>
Cc: sta...@vger.kernel.org
Reviewed-by: Josip Pavic <josip.pa...@amd.com>
Acked-by: Aurabindo Pillai <aurabindo.pil...@amd.com>
Signed-off-by: Sohaib Nadeem <sohaib.nad...@amd.com>
Tested-by: Daniel Wheeler <daniel.whee...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
---
 .../gpu/drm/amd/display/dc/bios/bios_parser2.c   | 16 ++++++++++------
 .../drm/amd/display/dc/link/link_validation.c    |  2 +-
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c 
b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
index 960c4b4f6ddf3..05f392501c0ae 100644
--- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
+++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
@@ -1850,19 +1850,21 @@ static enum bp_result get_firmware_info_v3_2(
                /* Vega12 */
                smu_info_v3_2 = GET_IMAGE(struct atom_smu_info_v3_2,
                                                        DATA_TABLES(smu_info));
-               DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): 
%d\n", smu_info_v3_2->gpuclk_ss_percentage);
                if (!smu_info_v3_2)
                        return BP_RESULT_BADBIOSTABLE;
 
+               DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): 
%d\n", smu_info_v3_2->gpuclk_ss_percentage);
+
                info->default_engine_clk = smu_info_v3_2->bootup_dcefclk_10khz 
* 10;
        } else if (revision.minor == 3) {
                /* Vega20 */
                smu_info_v3_3 = GET_IMAGE(struct atom_smu_info_v3_3,
                                                        DATA_TABLES(smu_info));
-               DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): 
%d\n", smu_info_v3_3->gpuclk_ss_percentage);
                if (!smu_info_v3_3)
                        return BP_RESULT_BADBIOSTABLE;
 
+               DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): 
%d\n", smu_info_v3_3->gpuclk_ss_percentage);
+
                info->default_engine_clk = smu_info_v3_3->bootup_dcefclk_10khz 
* 10;
        }
 
@@ -2422,10 +2424,11 @@ static enum bp_result get_integrated_info_v11(
        info_v11 = GET_IMAGE(struct atom_integrated_system_info_v1_11,
                                        DATA_TABLES(integratedsysteminfo));
 
-       DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", 
info_v11->gpuclk_ss_percentage);
        if (info_v11 == NULL)
                return BP_RESULT_BADBIOSTABLE;
 
+       DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", 
info_v11->gpuclk_ss_percentage);
+
        info->gpu_cap_info =
        le32_to_cpu(info_v11->gpucapinfo);
        /*
@@ -2637,11 +2640,12 @@ static enum bp_result get_integrated_info_v2_1(
 
        info_v2_1 = GET_IMAGE(struct atom_integrated_system_info_v2_1,
                                        DATA_TABLES(integratedsysteminfo));
-       DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", 
info_v2_1->gpuclk_ss_percentage);
 
        if (info_v2_1 == NULL)
                return BP_RESULT_BADBIOSTABLE;
 
+       DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", 
info_v2_1->gpuclk_ss_percentage);
+
        info->gpu_cap_info =
        le32_to_cpu(info_v2_1->gpucapinfo);
        /*
@@ -2799,11 +2803,11 @@ static enum bp_result get_integrated_info_v2_2(
        info_v2_2 = GET_IMAGE(struct atom_integrated_system_info_v2_2,
                                        DATA_TABLES(integratedsysteminfo));
 
-       DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", 
info_v2_2->gpuclk_ss_percentage);
-
        if (info_v2_2 == NULL)
                return BP_RESULT_BADBIOSTABLE;
 
+       DC_LOG_BIOS("gpuclk_ss_percentage (unit of 0.001 percent): %d\n", 
info_v2_2->gpuclk_ss_percentage);
+
        info->gpu_cap_info =
        le32_to_cpu(info_v2_2->gpucapinfo);
        /*
diff --git a/drivers/gpu/drm/amd/display/dc/link/link_validation.c 
b/drivers/gpu/drm/amd/display/dc/link/link_validation.c
index 1c038e2a527b3..1aed55b0ab6a0 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_validation.c
+++ b/drivers/gpu/drm/amd/display/dc/link/link_validation.c
@@ -359,7 +359,7 @@ bool link_validate_dpia_bandwidth(const struct 
dc_stream_state *stream, const un
        struct dc_link *dpia_link[MAX_DPIA_NUM] = {0};
        int num_dpias = 0;
 
-       for (uint8_t i = 0; i < num_streams; ++i) {
+       for (unsigned int i = 0; i < num_streams; ++i) {
                if (stream[i].signal == SIGNAL_TYPE_DISPLAY_PORT) {
                        /* new dpia sst stream, check whether it exceeds max 
dpia */
                        if (num_dpias >= MAX_DPIA_NUM)
-- 
2.43.0




Reply via email to