From: Brian Starkey Date: Tue, 11 Oct 2016 14:26:05 +0000 (+0100) Subject: drm: mali-dp: Add pitch alignment check for planes X-Git-Tag: v4.10-rc1~154^2~33^2~8 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=a46a096a40c8533f94e781d376b798c1a5208cfd;p=karo-tx-linux.git drm: mali-dp: Add pitch alignment check for planes Check that the framebuffer pitches are appropriately aligned when checking planes. Signed-off-by: Brian Starkey Signed-off-by: Liviu Dudau --- diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c index abaca03b9d36..eaae81908de2 100644 --- a/drivers/gpu/drm/arm/malidp_planes.c +++ b/drivers/gpu/drm/arm/malidp_planes.c @@ -86,17 +86,30 @@ static int malidp_de_plane_check(struct drm_plane *plane, { struct malidp_plane *mp = to_malidp_plane(plane); struct malidp_plane_state *ms = to_malidp_plane_state(state); + struct drm_framebuffer *fb; + int n_planes, i; u8 format_id; u32 src_w, src_h; if (!state->crtc || !state->fb) return 0; + fb = state->fb; + format_id = malidp_hw_get_format_id(&mp->hwdev->map, mp->layer->id, - state->fb->pixel_format); + fb->pixel_format); if (format_id == MALIDP_INVALID_FORMAT_ID) return -EINVAL; + n_planes = drm_format_num_planes(fb->pixel_format); + for (i = 0; i < n_planes; i++) { + if (!malidp_hw_pitch_valid(mp->hwdev, fb->pitches[i])) { + DRM_DEBUG_KMS("Invalid pitch %u for plane %d\n", + fb->pitches[i], i); + return -EINVAL; + } + } + src_w = state->src_w >> 16; src_h = state->src_h >> 16;