summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/drm_modes.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2017-11-15 18:49:13 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2018-01-29 22:27:25 +0300
commitc6ed6dad5cfb76d72d8f9accba9b9f8d572c518c (patch)
tree1102063decb16bda5076c8e8b664b4258344a796 /drivers/gpu/drm/drm_modes.c
parent064a3e6e8e4b01e7bcbf4de6564ab52530e86d92 (diff)
downloadlinux-c6ed6dad5cfb76d72d8f9accba9b9f8d572c518c.tar.xz
drm/uapi: Validate the mode flags/type
Currently userspace is allowed to feed in any king of garbage in the high bits of the mode flags/type, as are drivers when probing modes. Reject any mode with bogus flags/type. Hopefully this won't break any current userspace... v2: Split the type and flags checks to separates ifs (Chris) Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jose Abreu <Jose.Abreu@synopsys.com> Cc: Adam Jackson <ajax@redhat.com> Cc: Keith Packard <keithp@keithp.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171115154913.23827-1-ville.syrjala@linux.intel.com Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/drm_modes.c')
-rw-r--r--drivers/gpu/drm/drm_modes.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index 1a72883b836e..34b5123ebfc0 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -1036,6 +1036,12 @@ EXPORT_SYMBOL(drm_mode_equal_no_clocks_no_stereo);
enum drm_mode_status
drm_mode_validate_basic(const struct drm_display_mode *mode)
{
+ if (mode->type & ~DRM_MODE_TYPE_ALL)
+ return MODE_BAD;
+
+ if (mode->flags & ~DRM_MODE_FLAG_ALL)
+ return MODE_BAD;
+
if ((mode->flags & DRM_MODE_FLAG_3D_MASK) > DRM_MODE_FLAG_3D_MAX)
return MODE_BAD;