mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
drm/amd/display: Handle dml allocation failure to avoid crash
[Why] In the case where a dml allocation fails for any reason, the current state's dml contexts would no longer be valid. Then subsequent calls dc_state_copy_internal would shallow copy invalid memory and if the new state was released, a double free would occur. [How] Reset dml pointers in new_state to NULL and avoid invalid pointer Reviewed-by: Dillon Varone <dillon.varone@amd.com> Signed-off-by: Ryan Seto <ryanseto@amd.com> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -265,6 +265,9 @@ struct dc_state *dc_state_create_copy(struct dc_state *src_state)
|
|||||||
dc_state_copy_internal(new_state, src_state);
|
dc_state_copy_internal(new_state, src_state);
|
||||||
|
|
||||||
#ifdef CONFIG_DRM_AMD_DC_FP
|
#ifdef CONFIG_DRM_AMD_DC_FP
|
||||||
|
new_state->bw_ctx.dml2 = NULL;
|
||||||
|
new_state->bw_ctx.dml2_dc_power_source = NULL;
|
||||||
|
|
||||||
if (src_state->bw_ctx.dml2 &&
|
if (src_state->bw_ctx.dml2 &&
|
||||||
!dml2_create_copy(&new_state->bw_ctx.dml2, src_state->bw_ctx.dml2)) {
|
!dml2_create_copy(&new_state->bw_ctx.dml2, src_state->bw_ctx.dml2)) {
|
||||||
dc_state_release(new_state);
|
dc_state_release(new_state);
|
||||||
|
|||||||
Reference in New Issue
Block a user