[PATCH] drm: Fix uabi regression by allowing garbage mode->type from userspace
Thomas Hellstrom
thomas at shipmail.org
Thu Mar 22 07:42:11 UTC 2018
On 03/21/2018 10:12 PM, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Apparently xf86-video-vmware leaves the mode->type uninitialized
> when feeding the mode to the kernel. Thus we have no choice but
> to accept the garbage in. We'll just ignore any of the bits we
> don't want. The mode type is just a hint anyway, and more
> useful for the kernel->userspace direction.
>
> Reported-by: Thomas Hellstrom <thomas at shipmail.org>
> CC: Thomas Hellstrom <thomas at shipmail.org>
> Cc: Adam Jackson <ajax at redhat.com>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Fixes: c6ed6dad5cfb ("drm/uapi: Validate the mode flags/type")
> References: https://lists.freedesktop.org/archives/dri-devel/2018-March/170213.html
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/drm_modes.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
> index f6b7c0e36a1a..e82b61e08f8c 100644
> --- a/drivers/gpu/drm/drm_modes.c
> +++ b/drivers/gpu/drm/drm_modes.c
> @@ -1611,7 +1611,13 @@ int drm_mode_convert_umode(struct drm_device *dev,
> out->vscan = in->vscan;
> out->vrefresh = in->vrefresh;
> out->flags = in->flags;
> - out->type = in->type;
> + /*
> + * Old xf86-video-vmware (possibly others too) used to
> + * leave 'type' unititialized. Just ignore any bits we
> + * don't like. It's a just hint after all, and more
> + * useful for the kernel->userspace direction anyway.
> + */
> + out->type = in->type & DRM_MODE_TYPE_ALL;
> strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN);
> out->name[DRM_DISPLAY_MODE_LEN-1] = 0;
>
Tested-by: Thomas Hellstrom <thellstrom at vmware.com>
Thanks,
Thomas
More information about the dri-devel
mailing list