Message ID | 20220927191200.216488-1-hamza.mahfooz@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/amd/display: fix array-bounds error in dc_stream_remove_writeback() | expand |
[AMD Official Use Only - General]
Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
--
Regards,
Jay
I'm still seeing a warning even with this fix: /home/fkuehlin/compute/kernel/drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function ?dc_stream_remove_writeback?: /home/fkuehlin/compute/kernel/drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:55: warning: array subscript 1 is above array bounds of ?struct dc_writeback_info[1]? [-Warray-bounds] 527 | stream->writeback_info[j] = stream->writeback_info[i]; | ~~~~~~~~~~~~~~~~~~~~~~^~~ Regards, Felix Am 2022-09-27 um 16:35 schrieb Pillai, Aurabindo: > > [AMD Official Use Only - General] > > > [AMD Official Use Only - General] > > > Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com> > > -- > > Regards, > Jay > ------------------------------------------------------------------------ > *From:* Mahfooz, Hamza <Hamza.Mahfooz@amd.com> > *Sent:* Tuesday, September 27, 2022 3:12 PM > *To:* linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> > *Cc:* 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> > *Subject:* [PATCH] drm/amd/display: fix array-bounds error in > dc_stream_remove_writeback() > Address the following error: > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function > ‘dc_stream_remove_writeback’: > 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] > 527 | stream->writeback_info[j] = stream->writeback_info[i]; > | ~~~~~~~~~~~~~~~~~~~~~~^~~ > In file included from > ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269, > from > ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29, > from > ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, > from > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27: > ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: > while referencing ‘writeback_info’ > 241 | struct dc_writeback_info writeback_info[MAX_DWB_PIPES]; > | > > Currently, we aren't checking to see if j remains within > writeback_info[]'s bounds. So, add a check to make sure that we aren't > overflowing the buffer. > > Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> > --- > drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > index 3ca1592ce7ac..ae13887756bf 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > @@ -520,7 +520,7 @@ bool dc_stream_remove_writeback(struct dc *dc, > } > > /* remove writeback info for disabled writeback pipes from > stream */ > - for (i = 0, j = 0; i < stream->num_wb_info; i++) { > + for (i = 0, j = 0; i < stream->num_wb_info && j < > MAX_DWB_PIPES; i++) { > if (stream->writeback_info[i].wb_enabled) { > if (i != j) > /* trim the array */ > -- > 2.37.2 >
On 2022-09-29 11:36, Felix Kuehling wrote: > I'm still seeing a warning even with this fix: > > /home/fkuehlin/compute/kernel/drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function ?dc_stream_remove_writeback?: > /home/fkuehlin/compute/kernel/drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:55: warning: array subscript 1 is above array bounds of ?struct dc_writeback_info[1]? [-Warray-bounds] > 527 | stream->writeback_info[j] = stream->writeback_info[i]; > | ~~~~~~~~~~~~~~~~~~~~~~^~~ > What version of GCC are you using? I don't see it on GCC 12.2 with this patch applied. > Regards, > Felix > > > Am 2022-09-27 um 16:35 schrieb Pillai, Aurabindo: >> >> [AMD Official Use Only - General] >> >> >> [AMD Official Use Only - General] >> >> >> Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com> >> >> -- >> >> Regards, >> Jay >> ------------------------------------------------------------------------ >> *From:* Mahfooz, Hamza <Hamza.Mahfooz@amd.com> >> *Sent:* Tuesday, September 27, 2022 3:12 PM >> *To:* linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> >> *Cc:* 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> >> *Subject:* [PATCH] drm/amd/display: fix array-bounds error in >> dc_stream_remove_writeback() >> Address the following error: >> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function >> ‘dc_stream_remove_writeback’: >> 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] >> 527 | stream->writeback_info[j] = stream->writeback_info[i]; >> | ~~~~~~~~~~~~~~~~~~~~~~^~~ >> In file included from >> ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269, >> from >> ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29, >> from >> ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, >> from >> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27: >> ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: >> while referencing ‘writeback_info’ >> 241 | struct dc_writeback_info writeback_info[MAX_DWB_PIPES]; >> | >> >> Currently, we aren't checking to see if j remains within >> writeback_info[]'s bounds. So, add a check to make sure that we aren't >> overflowing the buffer. >> >> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> >> --- >> drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >> b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >> index 3ca1592ce7ac..ae13887756bf 100644 >> --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >> @@ -520,7 +520,7 @@ bool dc_stream_remove_writeback(struct dc *dc, >> } >> >> /* remove writeback info for disabled writeback pipes from >> stream */ >> - for (i = 0, j = 0; i < stream->num_wb_info; i++) { >> + for (i = 0, j = 0; i < stream->num_wb_info && j < >> MAX_DWB_PIPES; i++) { >> if (stream->writeback_info[i].wb_enabled) { >> if (i != j) >> /* trim the array */ >> -- >> 2.37.2 >>
Am 2022-09-29 um 11:41 schrieb Hamza Mahfooz: > > > On 2022-09-29 11:36, Felix Kuehling wrote: >> I'm still seeing a warning even with this fix: >> >> /home/fkuehlin/compute/kernel/drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: >> In function ?dc_stream_remove_writeback?: >> /home/fkuehlin/compute/kernel/drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:55: >> warning: array subscript 1 is above array bounds of ?struct >> dc_writeback_info[1]? [-Warray-bounds] >> 527 | stream->writeback_info[j] = stream->writeback_info[i]; >> | ~~~~~~~~~~~~~~~~~~~~~~^~~ >> > > What version of GCC are you using? I don't see it on GCC 12.2 with > this patch applied. gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Regards, Felix > >> Regards, >> Felix >> >> >> Am 2022-09-27 um 16:35 schrieb Pillai, Aurabindo: >>> >>> [AMD Official Use Only - General] >>> >>> >>> [AMD Official Use Only - General] >>> >>> >>> Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com> >>> >>> -- >>> >>> Regards, >>> Jay >>> ------------------------------------------------------------------------ >>> >>> *From:* Mahfooz, Hamza <Hamza.Mahfooz@amd.com> >>> *Sent:* Tuesday, September 27, 2022 3:12 PM >>> *To:* linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> >>> *Cc:* 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> >>> *Subject:* [PATCH] drm/amd/display: fix array-bounds error in >>> dc_stream_remove_writeback() >>> Address the following error: >>> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In >>> function ‘dc_stream_remove_writeback’: >>> 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] >>> 527 | stream->writeback_info[j] = stream->writeback_info[i]; >>> | ~~~~~~~~~~~~~~~~~~~~~~^~~ >>> In file included from >>> ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269, >>> from >>> ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29, >>> from >>> ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, >>> from >>> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27: >>> ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: >>> while referencing ‘writeback_info’ >>> 241 | struct dc_writeback_info writeback_info[MAX_DWB_PIPES]; >>> | >>> >>> Currently, we aren't checking to see if j remains within >>> writeback_info[]'s bounds. So, add a check to make sure that we aren't >>> overflowing the buffer. >>> >>> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> >>> --- >>> drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >>> b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >>> index 3ca1592ce7ac..ae13887756bf 100644 >>> --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >>> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c >>> @@ -520,7 +520,7 @@ bool dc_stream_remove_writeback(struct dc *dc, >>> } >>> >>> /* remove writeback info for disabled writeback pipes from >>> stream */ >>> - for (i = 0, j = 0; i < stream->num_wb_info; i++) { >>> + for (i = 0, j = 0; i < stream->num_wb_info && j < >>> MAX_DWB_PIPES; i++) { >>> if (stream->writeback_info[i].wb_enabled) { >>> if (i != j) >>> /* trim the array */ >>> -- >>> 2.37.2 >>> >
On Tue, Sep 27, 2022 at 03:12:00PM -0400, Hamza Mahfooz wrote: > Address the following error: > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function ‘dc_stream_remove_writeback’: > 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] > 527 | stream->writeback_info[j] = stream->writeback_info[i]; > | ~~~~~~~~~~~~~~~~~~~~~~^~~ > In file included from ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269, > from ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29, > from ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, > from drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27: > ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: while referencing ‘writeback_info’ > 241 | struct dc_writeback_info writeback_info[MAX_DWB_PIPES]; > | > > Currently, we aren't checking to see if j remains within > writeback_info[]'s bounds. So, add a check to make sure that we aren't > overflowing the buffer. > > Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> With gcc 11.3, this patch doesn't fix a problem, it introduces one. Building csky:allmodconfig ... failed -------------- Error log: drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function 'dc_stream_remove_writeback': drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:83: error: array subscript 1 is above array bounds of 'struct dc_writeback_info[1]' [-Werror=array-bounds] 527 | stream->writeback_info[j] = stream->writeback_info[i]; Building mips:allmodconfig ... failed -------------- Error log: drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function 'dc_stream_remove_writeback': drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:83: error: array subscript [0, 0] is outside array bounds of 'struct dc_writeback_info[1]' [-Werror=array-bounds] 527 | stream->writeback_info[j] = stream->writeback_info[i]; Building arm:allmodconfig ... failed -------------- Error log: drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function 'dc_stream_remove_writeback': drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:83: error: array subscript [0, 0] is outside array bounds of 'struct dc_writeback_info[1]' [-Werror=array-bounds] 527 | stream->writeback_info[j] = stream->writeback_info[i]; Guenter
On Wed, Oct 05, 2022 at 11:46:15PM -0700, Guenter Roeck wrote: > On Tue, Sep 27, 2022 at 03:12:00PM -0400, Hamza Mahfooz wrote: > > Address the following error: > > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function ‘dc_stream_remove_writeback’: > > 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] > > 527 | stream->writeback_info[j] = stream->writeback_info[i]; > > | ~~~~~~~~~~~~~~~~~~~~~~^~~ > > In file included from ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269, > > from ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29, > > from ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, > > from drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27: > > ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: while referencing ‘writeback_info’ > > 241 | struct dc_writeback_info writeback_info[MAX_DWB_PIPES]; > > | > > > > Currently, we aren't checking to see if j remains within > > writeback_info[]'s bounds. So, add a check to make sure that we aren't > > overflowing the buffer. > > > > Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> > > With gcc 11.3, this patch doesn't fix a problem, it introduces one. > > Building csky:allmodconfig ... failed > -------------- > Error log: > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function 'dc_stream_remove_writeback': > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:83: error: array subscript 1 is above array bounds of 'struct dc_writeback_info[1]' [-Werror=array-bounds] > 527 | stream->writeback_info[j] = stream->writeback_info[i]; > > Building mips:allmodconfig ... failed > -------------- > Error log: > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function 'dc_stream_remove_writeback': > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:83: error: array subscript [0, 0] is outside array bounds of 'struct dc_writeback_info[1]' [-Werror=array-bounds] > 527 | stream->writeback_info[j] = stream->writeback_info[i]; > > Building arm:allmodconfig ... failed > -------------- > Error log: > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function 'dc_stream_remove_writeback': > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:83: error: array subscript [0, 0] is outside array bounds of 'struct dc_writeback_info[1]' [-Werror=array-bounds] > 527 | stream->writeback_info[j] = stream->writeback_info[i]; > #regzbot introduced: 5d8c3e836fc2 Complete list of build failures in my test system due to this patch, observed when building with gcc 11.3: Build results: total: 149 pass: 131 fail: 18 Failed builds: alpha:allmodconfig arm:allmodconfig arm64:allmodconfig csky:allmodconfig i386:allyesconfig i386:allmodconfig mips:allmodconfig openrisc:allmodconfig parisc:allmodconfig powerpc:allmodconfig powerpc:ppc32_allmodconfig riscv32:allmodconfig riscv:allmodconfig s390:allmodconfig sparc64:allmodconfig x86_64:allyesconfig x86_64:allmodconfig xtensa:allmodconfig Guenter
[removed a lot of people from the list of recipients, as this is mainly for Guenter] Hi Guenter! On 06.10.22 19:23, Guenter Roeck wrote: > On Wed, Oct 05, 2022 at 11:46:15PM -0700, Guenter Roeck wrote: >> On Tue, Sep 27, 2022 at 03:12:00PM -0400, Hamza Mahfooz wrote: >>> Address the following error: >>> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function ‘dc_stream_remove_writeback’: >>> 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] >>> 527 | stream->writeback_info[j] = stream->writeback_info[i]; >>> | ~~~~~~~~~~~~~~~~~~~~~~^~~ >>> In file included from ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269, >>> from ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29, >>> from ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, >>> from drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27: >>> ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: while referencing ‘writeback_info’ >>> 241 | struct dc_writeback_info writeback_info[MAX_DWB_PIPES]; >>> | >>> >>> Currently, we aren't checking to see if j remains within >>> writeback_info[]'s bounds. So, add a check to make sure that we aren't >>> overflowing the buffer. >>> >>> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> >> >> With gcc 11.3, this patch doesn't fix a problem, it introduces one. >> >> Building csky:allmodconfig ... failed >> -------------- >> Error log: >> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function 'dc_stream_remove_writeback': >> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:527:83: error: array subscript 1 is above array bounds of 'struct dc_writeback_info[1]' [-Werror=array-bounds] >> 527 | stream->writeback_info[j] = stream->writeback_info[i]; > > [...] > > #regzbot introduced: 5d8c3e836fc2 Thx for using regzbot, much appreciated. JFYI, the initial report was your own mail you were replying to here, so a "#regzbot ^introduced: ..." would have been more appropriate. In this case it didn't matter anyway, as the fix didn't include a "Link:" tag to the initial report anyway. No worries, I just have to tell regzbot about the fix manually then: #regzbot fixed-by: faf4d8e07f5b67 Ciao, Thorsten
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index 3ca1592ce7ac..ae13887756bf 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c @@ -520,7 +520,7 @@ bool dc_stream_remove_writeback(struct dc *dc, } /* remove writeback info for disabled writeback pipes from stream */ - for (i = 0, j = 0; i < stream->num_wb_info; i++) { + for (i = 0, j = 0; i < stream->num_wb_info && j < MAX_DWB_PIPES; i++) { if (stream->writeback_info[i].wb_enabled) { if (i != j) /* trim the array */
Address the following error: drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c: In function ‘dc_stream_remove_writeback’: 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] 527 | stream->writeback_info[j] = stream->writeback_info[i]; | ~~~~~~~~~~~~~~~~~~~~~~^~~ In file included from ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc.h:1269, from ./drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:29, from ./drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, from drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:27: ./drivers/gpu/drm/amd/amdgpu/../display/dc/dc_stream.h:241:34: note: while referencing ‘writeback_info’ 241 | struct dc_writeback_info writeback_info[MAX_DWB_PIPES]; | Currently, we aren't checking to see if j remains within writeback_info[]'s bounds. So, add a check to make sure that we aren't overflowing the buffer. Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> --- drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)