提交 f5869a83 编写于 作者: A Alan Cox 提交者: Dave Airlie

drm: stop vmgfx driver explosion

If you do a page flip with no flags set then event is NULL. If event is
NULL then the vmw_gfx driver likes to go digging into NULL and extracts
NULL->base.file_priv.

On a modern kernel with NULL mapping protection it's just another oops,
without it there are some "intriguing" possibilities.

What it should do is an open question but that for the driver owners to
sort out.
Signed-off-by: NAlan Cox <alan@linux.intel.com>
Reviewed-by: NJakob Bornecrantz <jakob@vmware.com>
Cc: stable@vger.kernel.org
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 85119c16
...@@ -1688,15 +1688,19 @@ int vmw_du_page_flip(struct drm_crtc *crtc, ...@@ -1688,15 +1688,19 @@ int vmw_du_page_flip(struct drm_crtc *crtc,
struct vmw_private *dev_priv = vmw_priv(crtc->dev); struct vmw_private *dev_priv = vmw_priv(crtc->dev);
struct drm_framebuffer *old_fb = crtc->fb; struct drm_framebuffer *old_fb = crtc->fb;
struct vmw_framebuffer *vfb = vmw_framebuffer_to_vfb(fb); struct vmw_framebuffer *vfb = vmw_framebuffer_to_vfb(fb);
struct drm_file *file_priv = event->base.file_priv; struct drm_file *file_priv ;
struct vmw_fence_obj *fence = NULL; struct vmw_fence_obj *fence = NULL;
struct drm_clip_rect clips; struct drm_clip_rect clips;
int ret; int ret;
if (event == NULL)
return -EINVAL;
/* require ScreenObject support for page flipping */ /* require ScreenObject support for page flipping */
if (!dev_priv->sou_priv) if (!dev_priv->sou_priv)
return -ENOSYS; return -ENOSYS;
file_priv = event->base.file_priv;
if (!vmw_kms_screen_object_flippable(dev_priv, crtc)) if (!vmw_kms_screen_object_flippable(dev_priv, crtc))
return -EINVAL; return -EINVAL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册