<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Arial;font-size:10pt;color:#0000FF;margin:5pt;" align="Left">
[AMD Official Use Only - General]<br>
</p>
<br>
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com><br>
</div>
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="Signature">
<div>
<div></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
--</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Regards,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Jay<br>
</div>
</div>
</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Mahfooz, Hamza <Hamza.Mahfooz@amd.com><br>
<b>Sent:</b> Tuesday, September 27, 2022 3:12 PM<br>
<b>To:</b> linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org><br>
<b>Cc:</b> Mahfooz, Hamza <Hamza.Mahfooz@amd.com>; Wentland, Harry <Harry.Wentland@amd.com>; Li, Sun peng (Leo) <Sunpeng.Li@amd.com>; Siqueira, Rodrigo <Rodrigo.Siqueira@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Koenig, Christian <Christian.Koenig@amd.com>;
 Pan, Xinhui <Xinhui.Pan@amd.com>; David Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; Lee, Alvin <Alvin.Lee2@amd.com>; Hung, Alex <Alex.Hung@amd.com>; Kotarac, Pavle <Pavle.Kotarac@amd.com>; Wang, Chao-kai (Stylon) <Stylon.Wang@amd.com>; Pillai,
 Aurabindo <Aurabindo.Pillai@amd.com>; Ma, Leo <Hanghong.Ma@amd.com>; Wu, Hersen <hersenxs.wu@amd.com>; Po-Yu Hsieh Paul <Paul.Hsieh@amd.com>; Jimmy Kizito <Jimmy.Kizito@amd.com>; amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org>; dri-devel@lists.freedesktop.org
 <dri-devel@lists.freedesktop.org><br>
<b>Subject:</b> [PATCH] drm/amd/display: fix array-bounds error in dc_stream_remove_writeback()</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Address the following error:<br>
drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function ‘dc_stream_remove_writeback’:<br>
drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:55: error: array subscript [0, 0] is outside array bounds of ‘struct dc_writeback_info[1]’ [-Werror=array-bounds]<br>
  527 |                                 stream->writeback_info[j] = stream->writeback_info[i];<br>
      |                                 ~~~~~~~~~~~~~~~~~~~~~~^~~<br>
In file included from ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269,<br>
                 from ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29,<br>
                 from ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29,<br>
                 from drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27:<br>
./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: while referencing ‘writeback_info’<br>
  241 |         struct dc_writeback_info writeback_info[MAX_DWB_PIPES];<br>
      |<br>
<br>
Currently, we aren't checking to see if j remains within<br>
writeback_info[]'s bounds. So, add a check to make sure that we aren't<br>
overflowing the buffer.<br>
<br>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com><br>
---<br>
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +-<br>
 1 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c<br>
index 3ca1592ce7ac..ae13887756bf 100644<br>
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c<br>
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c<br>
@@ -520,7 +520,7 @@ bool dc_stream_remove_writeback(struct dc *dc,<br>
         }<br>
 <br>
         /* remove writeback info for disabled writeback pipes from stream */<br>
-       for (i = 0, j = 0; i < stream->num_wb_info; i++) {<br>
+       for (i = 0, j = 0; i < stream->num_wb_info && j < MAX_DWB_PIPES; i++) {<br>
                 if (stream->writeback_info[i].wb_enabled) {<br>
                         if (i != j)<br>
                                 /* trim the array */<br>
-- <br>
2.37.2<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>