Message ID | ea0ff67b-3665-db82-9792-67a633ba07f5@web.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [resent] drm/amd/display: Fix exception handling in dm_validate_stream_and_context() | expand |
>> The label “cleanup” was used to jump to another pointer check despite of >> the detail in the implementation of the function “dm_validate_stream_and_context” >> that it was determined already that corresponding variables contained >> still null pointers. >> >> 1. Thus return directly if >> * a null pointer was passed for the function parameter “stream” >> or >> * a call of the function “dc_create_plane_state” failed. >> >> 2. Use a more appropriate label instead. >> >> 3. Delete two questionable checks. >> >> 4. Omit extra initialisations (for the variables “dc_state” and “dc_plane_state”) >> which became unnecessary with this refactoring. >> >> >> This issue was detected by using the Coccinelle software. >> >> Fixes: 5468c36d628524effbb89a9503eb1a2318804759 ("drm/amd/display: Filter Invalid 420 Modes for HDMI TMDS") > > Please truncate the hash to 12 characters. May longer identifiers (or even the complete SHA-1 ID) occasionally also be tolerated for the tag “Fixes”? How do you think about the proposed change possibilities? Regards, Markus
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index eeaeca8b51f4..3086613f5f5d 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -6426,19 +6426,19 @@ static enum dc_status dm_validate_stream_and_context(struct dc *dc, struct dc_stream_state *stream) { enum dc_status dc_result = DC_ERROR_UNEXPECTED; - struct dc_plane_state *dc_plane_state = NULL; - struct dc_state *dc_state = NULL; + struct dc_plane_state *dc_plane_state; + struct dc_state *dc_state; if (!stream) - goto cleanup; + return dc_result; dc_plane_state = dc_create_plane_state(dc); if (!dc_plane_state) - goto cleanup; + return dc_result; dc_state = dc_create_state(dc); if (!dc_state) - goto cleanup; + goto release_plane_state; /* populate stream to plane */ dc_plane_state->src_rect.height = stream->src.height; @@ -6475,13 +6475,9 @@ static enum dc_status dm_validate_stream_and_context(struct dc *dc, if (dc_result == DC_OK) dc_result = dc_validate_global_state(dc, dc_state, true); -cleanup: - if (dc_state) - dc_release_state(dc_state); - - if (dc_plane_state) - dc_plane_state_release(dc_plane_state); - + dc_release_state(dc_state); +release_plane_state: + dc_plane_state_release(dc_plane_state); return dc_result; }
Date: Sat, 18 Mar 2023 16:21:32 +0100 The label “cleanup” was used to jump to another pointer check despite of the detail in the implementation of the function “dm_validate_stream_and_context” that it was determined already that corresponding variables contained still null pointers. 1. Thus return directly if * a null pointer was passed for the function parameter “stream” or * a call of the function “dc_create_plane_state” failed. 2. Use a more appropriate label instead. 3. Delete two questionable checks. 4. Omit extra initialisations (for the variables “dc_state” and “dc_plane_state”) which became unnecessary with this refactoring. This issue was detected by using the Coccinelle software. Fixes: 5468c36d628524effbb89a9503eb1a2318804759 ("drm/amd/display: Filter Invalid 420 Modes for HDMI TMDS") Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) -- 2.40.0