[Intel-gfx] [PATCH] drm/i915: Check the minimum pitch for the user framebuffer
Chris Wilson
chris at chris-wilson.co.uk
Tue Jun 10 23:22:33 CEST 2014
Compute the smallest pitch required for a linear framebuffer and assert
that the user has declared a pitch that meets that minimum requirement.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
drivers/gpu/drm/i915/intel_display.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index cc62b140eb1c..ef34badbe69c 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11808,6 +11808,8 @@ static int intel_framebuffer_init(struct drm_device *dev,
{
int aligned_height;
int pitch_limit;
+ int depth;
+ int bpp;
int ret;
WARN_ON(!mutex_is_locked(&dev->struct_mutex));
@@ -11823,6 +11825,15 @@ static int intel_framebuffer_init(struct drm_device *dev,
return -EINVAL;
}
+ drm_fb_get_bpp_depth(mode_cmd->pixel_format, &bpp, &depth);
+ if (mode_cmd->pitches[0] < intel_framebuffer_pitch_for_width(mode_cmd->width,
+ bpp)) {
+ DRM_DEBUG("pitch (%d) must be at least the linear stride (%d)\n",
+ mode_cmd->pitches[0],
+ intel_framebuffer_pitch_for_width(mode_cmd->width, bpp));
+ return -EINVAL;
+ }
+
if (INTEL_INFO(dev)->gen >= 5 && !IS_VALLEYVIEW(dev)) {
pitch_limit = 32*1024;
} else if (INTEL_INFO(dev)->gen >= 4) {
--
2.0.0
More information about the Intel-gfx
mailing list