Commit edf38b58 authored by Harry Wentland's avatar Harry Wentland Committed by Alex Deucher

drm/amd/display: Fix potential NULL and mem leak in create_links

Found by smatch:
drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:148 create_links()
error: potential null dereference 'link->link_enc'.  (kzalloc returns
null)
Signed-off-by: default avatarHarry Wentland <harry.wentland@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b3fb2b4e
...@@ -121,6 +121,10 @@ static bool create_links( ...@@ -121,6 +121,10 @@ static bool create_links(
goto failed_alloc; goto failed_alloc;
} }
link->link_index = dc->link_count;
dc->links[dc->link_count] = link;
dc->link_count++;
link->ctx = dc->ctx; link->ctx = dc->ctx;
link->dc = dc; link->dc = dc;
link->connector_signal = SIGNAL_TYPE_VIRTUAL; link->connector_signal = SIGNAL_TYPE_VIRTUAL;
...@@ -128,6 +132,12 @@ static bool create_links( ...@@ -128,6 +132,12 @@ static bool create_links(
link->link_id.id = CONNECTOR_ID_VIRTUAL; link->link_id.id = CONNECTOR_ID_VIRTUAL;
link->link_id.enum_id = ENUM_ID_1; link->link_id.enum_id = ENUM_ID_1;
link->link_enc = kzalloc(sizeof(*link->link_enc), GFP_KERNEL); link->link_enc = kzalloc(sizeof(*link->link_enc), GFP_KERNEL);
if (!link->link_enc) {
BREAK_TO_DEBUGGER();
goto failed_alloc;
}
link->link_status.dpcd_caps = &link->dpcd_caps; link->link_status.dpcd_caps = &link->dpcd_caps;
enc_init.ctx = dc->ctx; enc_init.ctx = dc->ctx;
...@@ -139,10 +149,6 @@ static bool create_links( ...@@ -139,10 +149,6 @@ static bool create_links(
enc_init.encoder.id = ENCODER_ID_INTERNAL_VIRTUAL; enc_init.encoder.id = ENCODER_ID_INTERNAL_VIRTUAL;
enc_init.encoder.enum_id = ENUM_ID_1; enc_init.encoder.enum_id = ENUM_ID_1;
virtual_link_encoder_construct(link->link_enc, &enc_init); virtual_link_encoder_construct(link->link_enc, &enc_init);
link->link_index = dc->link_count;
dc->links[dc->link_count] = link;
dc->link_count++;
} }
return true; return true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment