[PATCH] drm/amd/display: Add null checks for 'stream' and 'plane' before dereferencing

Aurabindo Pillai aurabindo.pillai at amd.com
Thu May 30 15:38:12 UTC 2024



On 5/28/24 2:18 AM, Srinivasan Shanmugam wrote:
> This commit adds null checks for the 'stream' and 'plane' variables in
> the dcn30_apply_idle_power_optimizations function. These variables were
> previously assumed to be null at line 922, but they were used later in
> the code without checking if they were null. This could potentially lead
> to a null pointer dereference, which would cause a crash.
> 
> The null checks ensure that 'stream' and 'plane' are not null before
> they are used, preventing potential crashes.
> 
> Fixes the below static smatch checker:
> drivers/gpu/drm/amd/amdgpu/../display/dc/hwss/dcn30/dcn30_hwseq.c:938 dcn30_apply_idle_power_optimizations() error: we previously assumed 'stream' could be null (see line 922)
> drivers/gpu/drm/amd/amdgpu/../display/dc/hwss/dcn30/dcn30_hwseq.c:940 dcn30_apply_idle_power_optimizations() error: we previously assumed 'plane' could be null (see line 922)
> 
> Cc: Tom Chung <chiahsuan.chung at amd.com>
> Cc: Nicholas Kazlauskas <nicholas.kazlauskas at amd.com>
> Cc: Bhawanpreet Lakha <Bhawanpreet.Lakha at amd.com>
> Cc: Rodrigo Siqueira <Rodrigo.Siqueira at amd.com>
> Cc: Roman Li <roman.li at amd.com>
> Cc: Hersen Wu <hersenxs.wu at amd.com>
> Cc: Alex Hung <alex.hung at amd.com>
> Cc: Aurabindo Pillai <aurabindo.pillai at amd.com>
> Cc: Harry Wentland <harry.wentland at amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at amd.com>
> ---
>   drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c b/drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c
> index 29d1f150846a..4c4706153305 100644
> --- a/drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c
> +++ b/drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c
> @@ -919,6 +919,9 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable)
>   			stream = dc->current_state->streams[0];
>   			plane = (stream ? dc->current_state->stream_status[0].plane_states[0] : NULL);
>   
> +			if (!stream || !plane)
> +				return false;
> +
>   			if (stream && plane) {
>   				cursor_cache_enable = stream->cursor_position.enable &&
>   						plane->address.grph.cursor_cache_addr.quad_part;

Reviewed-by: Aurabindo Pillai <aurabindo.pillai at amd.com>

--

Thanks & Regards,
Aurabindo Pillai


More information about the amd-gfx mailing list