drm/i915: Sanity check user framebuffer parameters on creation
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
@@ -5371,8 +5371,25 @@ int intel_framebuffer_init(struct drm_device *dev,
|
|||||||
struct drm_mode_fb_cmd *mode_cmd,
|
struct drm_mode_fb_cmd *mode_cmd,
|
||||||
struct drm_gem_object *obj)
|
struct drm_gem_object *obj)
|
||||||
{
|
{
|
||||||
|
struct drm_i915_gem_object *obj_priv = to_intel_bo(obj);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if (obj_priv->tiling_mode == I915_TILING_Y)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (mode_cmd->pitch & 63)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
switch (mode_cmd->bpp) {
|
||||||
|
case 8:
|
||||||
|
case 16:
|
||||||
|
case 24:
|
||||||
|
case 32:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
ret = drm_framebuffer_init(dev, &intel_fb->base, &intel_fb_funcs);
|
ret = drm_framebuffer_init(dev, &intel_fb->base, &intel_fb_funcs);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
DRM_ERROR("framebuffer init failed %d\n", ret);
|
DRM_ERROR("framebuffer init failed %d\n", ret);
|
||||||
|
Reference in New Issue
Block a user