From: Aric Cyr Date: Tue, 28 Sep 2021 20:05:27 +0000 (-0400) Subject: drm/amd/display: Validate plane rects before use X-Git-Tag: v5.16-rc1~140^2~5^2~47 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=94e587b8d1bbfb9fbce5b158c2b63d1af6a73af1;p=thirdparty%2Flinux.git drm/amd/display: Validate plane rects before use [Why] Calculation of scaling ratio can result in a crash due to zero'd src or dst plane rects. [How] Validate that src and dst rects are valid before using for scaling calculations. Reviewed-by: Josip Pavic Acked-by: Agustin Gutierrez Sanchez Signed-off-by: Aric Cyr Tested-by: Daniel Wheeler Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c index 561c10a92bb53..9e83fd54e2ca4 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c @@ -3009,6 +3009,11 @@ enum dc_status dc_validate_plane(struct dc *dc, const struct dc_plane_state *pla { enum dc_status res = DC_OK; + /* check if surface has invalid dimensions */ + if (plane_state->src_rect.width == 0 || plane_state->src_rect.height == 0 || + plane_state->dst_rect.width == 0 || plane_state->dst_rect.height == 0) + return DC_FAIL_SURFACE_VALIDATE; + /* TODO For now validates pixel format only */ if (dc->res_pool->funcs->validate_plane) return dc->res_pool->funcs->validate_plane(plane_state, &dc->caps);