From 88fce5317a23fffa7a15c91c64e0ea63313fdfa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Tue, 20 Dec 2011 00:06:47 +0200 Subject: [PATCH] --- yaml --- r: 282510 b: refs/heads/master c: 62443be626a3a753e6c650abd87e8a39fd569d7e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/drm_crtc.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f8bb8d2fb516..727e1e574dfb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 22cd7c625837e520c94ffda7bc926396bbc4ba67 +refs/heads/master: 62443be626a3a753e6c650abd87e8a39fd569d7e diff --git a/trunk/drivers/gpu/drm/drm_crtc.c b/trunk/drivers/gpu/drm/drm_crtc.c index 80cfe1cbeb99..66a165dac5c4 100644 --- a/trunk/drivers/gpu/drm/drm_crtc.c +++ b/trunk/drivers/gpu/drm/drm_crtc.c @@ -1662,6 +1662,7 @@ int drm_mode_setplane(struct drm_device *dev, void *data, struct drm_framebuffer *fb; int ret = 0; unsigned int fb_width, fb_height; + int i; if (!drm_core_check_feature(dev, DRIVER_MODESET)) return -EINVAL; @@ -1710,6 +1711,16 @@ int drm_mode_setplane(struct drm_device *dev, void *data, } fb = obj_to_fb(obj); + /* Check whether this plane supports the fb pixel format. */ + for (i = 0; i < plane->format_count; i++) + if (fb->pixel_format == plane->format_types[i]) + break; + if (i == plane->format_count) { + DRM_DEBUG_KMS("Invalid pixel format 0x%08x\n", fb->pixel_format); + ret = -EINVAL; + goto out; + } + fb_width = fb->width << 16; fb_height = fb->height << 16;