| From 8d44b63983d6ae4b47a97aa490df08255628d84e Mon Sep 17 00:00:00 2001 |
| From: Murray McAllister <murray.mcallister@insomniasec.com> |
| Date: Mon, 27 Mar 2017 11:15:12 +0200 |
| Subject: [PATCH] drm/vmwgfx: avoid calling vzalloc with a 0 size in |
| vmw_get_cap_3d_ioctl() |
| |
| commit 63774069d9527a1aeaa4aa20e929ef5e8e9ecc38 upstream. |
| |
| In vmw_get_cap_3d_ioctl(), a user can supply 0 for a size that is |
| used in vzalloc(). This eventually calls dump_stack() (in warn_alloc()), |
| which can leak useful addresses to dmesg. |
| |
| Add check to avoid a size of 0. |
| |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Murray McAllister <murray.mcallister@insomniasec.com> |
| Reviewed-by: Sinclair Yeh <syeh@vmware.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c |
| index b8c6a03c8c54..1802d0e7fab8 100644 |
| --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c |
| +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c |
| @@ -186,7 +186,7 @@ int vmw_get_cap_3d_ioctl(struct drm_device *dev, void *data, |
| bool gb_objects = !!(dev_priv->capabilities & SVGA_CAP_GBOBJECTS); |
| struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv); |
| |
| - if (unlikely(arg->pad64 != 0)) { |
| + if (unlikely(arg->pad64 != 0 || arg->max_size == 0)) { |
| DRM_ERROR("Illegal GET_3D_CAP argument.\n"); |
| return -EINVAL; |
| } |
| -- |
| 2.12.0 |
| |