From: Leo Chen <[email protected]>

[ Upstream commit 2c437d9a0b496168e1a1defd17b531f0a526dbe9 ]

[Why & How]
Array indices out of bound caused memory corruption. Adding checks to
ensure that array index stays in bound.

Reviewed-by: Charlene Liu <[email protected]>
Reviewed-by: Nicholas Kazlauskas <[email protected]>
Signed-off-by: Leo Chen <[email protected]>
Signed-off-by: Wayne Lin <[email protected]>
Tested-by: Daniel Wheeler <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 .../gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c    | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c 
b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c
index a54d7358d9e9b..c6867b0849a87 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c
@@ -242,11 +242,11 @@ static void dcn35_notify_host_router_bw(struct clk_mgr 
*clk_mgr_base, struct dc_
        struct clk_mgr_internal *clk_mgr = TO_CLK_MGR_INTERNAL(clk_mgr_base);
        uint32_t host_router_bw_kbps[MAX_HOST_ROUTERS_NUM] = { 0 };
        int i;
-
        for (i = 0; i < context->stream_count; ++i) {
                const struct dc_stream_state *stream = context->streams[i];
                const struct dc_link *link = stream->link;
-               uint8_t lowest_dpia_index = 0, hr_index = 0;
+               uint8_t lowest_dpia_index = 0;
+               unsigned int hr_index = 0;
 
                if (!link)
                        continue;
@@ -256,6 +256,8 @@ static void dcn35_notify_host_router_bw(struct clk_mgr 
*clk_mgr_base, struct dc_
                        continue;
 
                hr_index = (link->link_index - lowest_dpia_index) / 2;
+               if (hr_index >= MAX_HOST_ROUTERS_NUM)
+                       continue;
                host_router_bw_kbps[hr_index] += 
dc_bandwidth_in_kbps_from_timing(
                        &stream->timing, 
dc_link_get_highest_encoding_format(link));
        }
-- 
2.43.0

Reply via email to