* [PATCH] drm/amd/display: Fix potential index out of bounds in color transformation function
@ 2024-02-28 9:17 Srinivasan Shanmugam
2024-03-11 5:41 ` Chung, ChiaHsuan (Tom)
0 siblings, 1 reply; 2+ messages in thread
From: Srinivasan Shanmugam @ 2024-02-28 9:17 UTC (permalink / raw)
To: Aurabindo Pillai, Rodrigo Siqueira
Cc: amd-gfx, Srinivasan Shanmugam, Vitaly Prosyak, Charlene Liu,
Harry Wentland, Roman Li, Tom Chung
Fixes index out of bounds issue in the color transformation function.
The issue could occur when the index 'i' exceeds the number of transfer
function points (TRANSFER_FUNC_POINTS).
The fix adds a check to ensure 'i' is within bounds before accessing the
transfer function points. If 'i' is out of bounds, an error message is
logged and the function returns false to indicate an error.
Reported by smatch:
drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_cm_common.c:405 cm_helper_translate_curve_to_hw_format() error: buffer overflow 'output_tf->tf_pts.red' 1025 <= s32max
drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_cm_common.c:406 cm_helper_translate_curve_to_hw_format() error: buffer overflow 'output_tf->tf_pts.green' 1025 <= s32max
drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_cm_common.c:407 cm_helper_translate_curve_to_hw_format() error: buffer overflow 'output_tf->tf_pts.blue' 1025 <= s32max
Fixes: b629596072e5 ("drm/amd/display: Build unity lut for shaper")
Cc: Vitaly Prosyak <vitaly.prosyak@amd.com>
Cc: Charlene Liu <Charlene.Liu@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Cc: Roman Li <roman.li@amd.com>
Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
Cc: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
---
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
index b7e57aa27361..b0d192c6e63e 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
@@ -402,6 +402,11 @@ bool cm_helper_translate_curve_to_hw_format(struct dc_context *ctx,
i += increment) {
if (j == hw_points - 1)
break;
+ if (i >= TRANSFER_FUNC_POINTS) {
+ DC_LOG_ERROR("Index out of bounds: i=%d, TRANSFER_FUNC_POINTS=%d\n",
+ i, TRANSFER_FUNC_POINTS);
+ return false;
+ }
rgb_resulted[j].red = output_tf->tf_pts.red[i];
rgb_resulted[j].green = output_tf->tf_pts.green[i];
rgb_resulted[j].blue = output_tf->tf_pts.blue[i];
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] drm/amd/display: Fix potential index out of bounds in color transformation function
2024-02-28 9:17 [PATCH] drm/amd/display: Fix potential index out of bounds in color transformation function Srinivasan Shanmugam
@ 2024-03-11 5:41 ` Chung, ChiaHsuan (Tom)
0 siblings, 0 replies; 2+ messages in thread
From: Chung, ChiaHsuan (Tom) @ 2024-03-11 5:41 UTC (permalink / raw)
To: Srinivasan Shanmugam, Aurabindo Pillai, Rodrigo Siqueira
Cc: amd-gfx, Vitaly Prosyak, Charlene Liu, Harry Wentland, Roman Li
Reviewed-by: Tom Chung <chiahsuan.chung@amd.com>
On 2/28/2024 5:17 PM, Srinivasan Shanmugam wrote:
> Fixes index out of bounds issue in the color transformation function.
> The issue could occur when the index 'i' exceeds the number of transfer
> function points (TRANSFER_FUNC_POINTS).
>
> The fix adds a check to ensure 'i' is within bounds before accessing the
> transfer function points. If 'i' is out of bounds, an error message is
> logged and the function returns false to indicate an error.
>
> Reported by smatch:
> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_cm_common.c:405 cm_helper_translate_curve_to_hw_format() error: buffer overflow 'output_tf->tf_pts.red' 1025 <= s32max
> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_cm_common.c:406 cm_helper_translate_curve_to_hw_format() error: buffer overflow 'output_tf->tf_pts.green' 1025 <= s32max
> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_cm_common.c:407 cm_helper_translate_curve_to_hw_format() error: buffer overflow 'output_tf->tf_pts.blue' 1025 <= s32max
>
> Fixes: b629596072e5 ("drm/amd/display: Build unity lut for shaper")
> Cc: Vitaly Prosyak <vitaly.prosyak@amd.com>
> Cc: Charlene Liu <Charlene.Liu@amd.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
> Cc: Roman Li <roman.li@amd.com>
> Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
> Cc: Tom Chung <chiahsuan.chung@amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
> ---
> drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
> index b7e57aa27361..b0d192c6e63e 100644
> --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
> +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c
> @@ -402,6 +402,11 @@ bool cm_helper_translate_curve_to_hw_format(struct dc_context *ctx,
> i += increment) {
> if (j == hw_points - 1)
> break;
> + if (i >= TRANSFER_FUNC_POINTS) {
> + DC_LOG_ERROR("Index out of bounds: i=%d, TRANSFER_FUNC_POINTS=%d\n",
> + i, TRANSFER_FUNC_POINTS);
> + return false;
> + }
> rgb_resulted[j].red = output_tf->tf_pts.red[i];
> rgb_resulted[j].green = output_tf->tf_pts.green[i];
> rgb_resulted[j].blue = output_tf->tf_pts.blue[i];
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-03-11 5:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-28 9:17 [PATCH] drm/amd/display: Fix potential index out of bounds in color transformation function Srinivasan Shanmugam
2024-03-11 5:41 ` Chung, ChiaHsuan (Tom)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox