summaryrefslogtreecommitdiffstats
path: root/include/uapi/drm/drm_mode.h
diff options
context:
space:
mode:
authorVille Syrjälä2017-11-15 16:49:13 +0100
committerVille Syrjälä2018-01-29 20:27:25 +0100
commitc6ed6dad5cfb76d72d8f9accba9b9f8d572c518c (patch)
tree1102063decb16bda5076c8e8b664b4258344a796 /include/uapi/drm/drm_mode.h
parentdrm/modes: Move 3D stereo flag check into drm_mode_validate_basic() (diff)
downloadkernel-qcow2-linux-c6ed6dad5cfb76d72d8f9accba9b9f8d572c518c.tar.gz
kernel-qcow2-linux-c6ed6dad5cfb76d72d8f9accba9b9f8d572c518c.tar.xz
kernel-qcow2-linux-c6ed6dad5cfb76d72d8f9accba9b9f8d572c518c.zip
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 'include/uapi/drm/drm_mode.h')
-rw-r--r--include/uapi/drm/drm_mode.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index 5597a87154e5..004db470b477 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -46,6 +46,14 @@ extern "C" {
#define DRM_MODE_TYPE_USERDEF (1<<5)
#define DRM_MODE_TYPE_DRIVER (1<<6)
+#define DRM_MODE_TYPE_ALL (DRM_MODE_TYPE_BUILTIN | \
+ DRM_MODE_TYPE_CLOCK_C | \
+ DRM_MODE_TYPE_CRTC_C | \
+ DRM_MODE_TYPE_PREFERRED | \
+ DRM_MODE_TYPE_DEFAULT | \
+ DRM_MODE_TYPE_USERDEF | \
+ DRM_MODE_TYPE_DRIVER)
+
/* Video mode flags */
/* bit compatible with the xrandr RR_ definitions (bits 0-13)
*
@@ -99,6 +107,22 @@ extern "C" {
#define DRM_MODE_FLAG_PIC_AR_16_9 \
(DRM_MODE_PICTURE_ASPECT_16_9<<19)
+#define DRM_MODE_FLAG_ALL (DRM_MODE_FLAG_PHSYNC | \
+ DRM_MODE_FLAG_NHSYNC | \
+ DRM_MODE_FLAG_PVSYNC | \
+ DRM_MODE_FLAG_NVSYNC | \
+ DRM_MODE_FLAG_INTERLACE | \
+ DRM_MODE_FLAG_DBLSCAN | \
+ DRM_MODE_FLAG_CSYNC | \
+ DRM_MODE_FLAG_PCSYNC | \
+ DRM_MODE_FLAG_NCSYNC | \
+ DRM_MODE_FLAG_HSKEW | \
+ DRM_MODE_FLAG_BCAST | \
+ DRM_MODE_FLAG_PIXMUX | \
+ DRM_MODE_FLAG_DBLCLK | \
+ DRM_MODE_FLAG_CLKDIV2 | \
+ DRM_MODE_FLAG_3D_MASK)
+
/* DPMS flags */
/* bit compatible with the xorg definitions. */
#define DRM_MODE_DPMS_ON 0