Commit 4ecc5fbc authored by Tomi Valkeinen's avatar Tomi Valkeinen

drm/omap: add omap_gem_validate_flags()

Add a helper function omap_gem_validate_flags() which validates the
omap_bo flags passed from the userspace.

Also drop the dev_err() message, as the userspace can cause that at
will.
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: default avatarJean-Jacques Hiblot <jjhiblot@ti.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191010120000.1421-8-jjhiblot@ti.com
parent 18d7f5ab
...@@ -1133,6 +1133,38 @@ void omap_gem_free_object(struct drm_gem_object *obj) ...@@ -1133,6 +1133,38 @@ void omap_gem_free_object(struct drm_gem_object *obj)
kfree(omap_obj); kfree(omap_obj);
} }
static bool omap_gem_validate_flags(struct drm_device *dev, u32 flags)
{
struct omap_drm_private *priv = dev->dev_private;
switch (flags & OMAP_BO_CACHE_MASK) {
case OMAP_BO_CACHED:
case OMAP_BO_WC:
case OMAP_BO_CACHE_MASK:
break;
default:
return false;
}
if (flags & OMAP_BO_TILED_MASK) {
if (!priv->usergart)
return false;
switch (flags & OMAP_BO_TILED_MASK) {
case OMAP_BO_TILED_8:
case OMAP_BO_TILED_16:
case OMAP_BO_TILED_32:
break;
default:
return false;
}
}
return true;
}
/* GEM buffer object constructor */ /* GEM buffer object constructor */
struct drm_gem_object *omap_gem_new(struct drm_device *dev, struct drm_gem_object *omap_gem_new(struct drm_device *dev,
union omap_gem_size gsize, u32 flags) union omap_gem_size gsize, u32 flags)
...@@ -1144,13 +1176,11 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev, ...@@ -1144,13 +1176,11 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev,
size_t size; size_t size;
int ret; int ret;
if (!omap_gem_validate_flags(dev, flags))
return NULL;
/* Validate the flags and compute the memory and cache flags. */ /* Validate the flags and compute the memory and cache flags. */
if (flags & OMAP_BO_TILED_MASK) { if (flags & OMAP_BO_TILED_MASK) {
if (!priv->usergart) {
dev_err(dev->dev, "Tiled buffers require DMM\n");
return NULL;
}
/* /*
* Tiled buffers are always shmem paged backed. When they are * Tiled buffers are always shmem paged backed. When they are
* scanned out, they are remapped into DMM/TILER. * scanned out, they are remapped into DMM/TILER.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment