drm/amd/display: fix a dereference of a NULL pointer
authorWenjing Liu <wenjing.liu@amd.com>
Tue, 12 Mar 2024 19:31:59 +0000 (15:31 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 27 Mar 2024 13:26:17 +0000 (09:26 -0400)
[why&how]
In some platform out_transfer_func may not be popualted. We need to check
for null before dereferencing it.

Fixes: d2dea1f14038 ("drm/amd/display: Generalize new minimal transition path")
Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
Acked-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c

index e7dc128f6284b45846f4eff707d3f052dab7b108..03b554e912a20d4ae58e5161d55943eb0bb7a0d9 100644 (file)
@@ -3024,7 +3024,8 @@ static void backup_planes_and_stream_state(
                scratch->blend_tf[i] = *status->plane_states[i]->blend_tf;
        }
        scratch->stream_state = *stream;
-       scratch->out_transfer_func = *stream->out_transfer_func;
+       if (stream->out_transfer_func)
+               scratch->out_transfer_func = *stream->out_transfer_func;
 }
 
 static void restore_planes_and_stream_state(
@@ -3046,7 +3047,8 @@ static void restore_planes_and_stream_state(
                *status->plane_states[i]->blend_tf = scratch->blend_tf[i];
        }
        *stream = scratch->stream_state;
-       *stream->out_transfer_func = scratch->out_transfer_func;
+       if (stream->out_transfer_func)
+               *stream->out_transfer_func = scratch->out_transfer_func;
 }
 
 static bool update_planes_and_stream_state(struct dc *dc,