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: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Jean-Jacques Hiblot <jjhiblot@ti.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191010120000.1421-8-jjhiblot@ti.com
This commit is contained in:
parent
18d7f5ab54
commit
4ecc5fbcc4
|
@ -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,
|
||||||
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.
|
||||||
|
|
Loading…
Reference in New Issue