drm/amd/display: Add null pointer guards where needed
authorJosip Pavic <josip.pavic@amd.com>
Mon, 11 Dec 2023 22:50:19 +0000 (17:50 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 3 Jan 2024 15:31:36 +0000 (10:31 -0500)
[Why]
Some functions whose output is typically checked for null are not being
checked for null at several call sites, causing some static analysis
tools to throw an error.

[How]
Add null pointer guards around functions that typically have them at
other call sites.

Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Reviewed-by: Sung Lee <sung.lee@amd.com>
Reviewed-by: Aric Cyr <aric.cyr@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Josip Pavic <josip.pavic@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/core/dc_resource.c
drivers/gpu/drm/amd/display/dc/core/dc_stream.c

index d55de3f5115df4a2a8a30414b48b4328f6a5ccd9..b7c2eaebf8bfde70cd2b95c7f0910c6429a2e5c6 100644 (file)
@@ -3379,6 +3379,9 @@ static void commit_planes_for_stream_fast(struct dc *dc,
                        &context->res_ctx,
                        stream);
 
+       if (!top_pipe_to_program)
+               return;
+
        for (i = 0; i < dc->res_pool->pipe_count; i++) {
                struct pipe_ctx *pipe = &context->res_ctx.pipe_ctx[i];
 
@@ -3978,6 +3981,8 @@ static struct dc_state *create_minimal_transition_state(struct dc *dc,
        dc->debug.force_disable_subvp = true;
 
        minimal_transition_context = dc_state_create_copy(base_context);
+       if (!minimal_transition_context)
+               return NULL;
 
        /* commit minimal state */
        if (dc->res_pool->funcs->validate_bandwidth(dc, minimal_transition_context, false)) {
index 716b59bd03b65b1d0fa4c83f4673f44a93d9c9ba..f2abc1096ffb61b769d6de879d701dbcfcc2298b 100644 (file)
@@ -2460,6 +2460,9 @@ void resource_remove_otg_master_for_stream_output(struct dc_state *context,
        struct pipe_ctx *otg_master = resource_get_otg_master_for_stream(
                        &context->res_ctx, stream);
 
+       if (!otg_master)
+               return;
+
        ASSERT(resource_get_odm_slice_count(otg_master) == 1);
        ASSERT(otg_master->plane_state == NULL);
        ASSERT(otg_master->stream_res.stream_enc);
index f2b265ed7fc21599f82b35a20aa5c51e4732481d..54670e0b15189552dd8ee85a5c1a6f905820be37 100644 (file)
@@ -447,7 +447,8 @@ bool dc_stream_add_writeback(struct dc *dc,
        if (dc->hwss.enable_writeback) {
                struct dc_stream_status *stream_status = dc_stream_get_status(stream);
                struct dwbc *dwb = dc->res_pool->dwbc[wb_info->dwb_pipe_inst];
-               dwb->otg_inst = stream_status->primary_otg_inst;
+               if (stream_status)
+                       dwb->otg_inst = stream_status->primary_otg_inst;
        }
 
        if (!dc->hwss.update_bandwidth(dc, dc->current_state)) {