On 07/10/2019 13:25, Jean-Jacques Hiblot wrote:
From: Tomi Valkeinen tomi.valkeinen@ti.com
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
drivers/gpu/drm/omapdrm/omap_gem.c | 40 ++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c index 27e0a2f8508a..e518d93ca6df 100644 --- a/drivers/gpu/drm/omapdrm/omap_gem.c +++ b/drivers/gpu/drm/omapdrm/omap_gem.c @@ -1133,6 +1133,38 @@ void omap_gem_free_object(struct drm_gem_object *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 */ struct drm_gem_object *omap_gem_new(struct drm_device *dev, 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; int ret;
- if (!omap_gem_validate_flags(dev, flags))
return NULL;
- /* Validate the flags and compute the memory and cache flags. */ 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
- scanned out, they are remapped into DMM/TILER.
Reviewed-by: Jean-Jacques Hiblot jjhiblot@ti.com