Explorar el Código

drm: Avoid oops in DRM_IOCTL_RM_DRAW if a bad handle is supplied.

Signed-off-by: Eric Anholt <eric@anholt.net>
Acked-by: Michel Dänzer <michel@tungstengraphics.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Eric Anholt hace 16 años
padre
commit
7e78f72524
Se han modificado 1 ficheros con 4 adiciones y 0 borrados
  1. 4 0
      drivers/gpu/drm/drm_drawable.c

+ 4 - 0
drivers/gpu/drm/drm_drawable.c

@@ -81,6 +81,10 @@ int drm_rmdraw(struct drm_device *dev, void *data, struct drm_file *file_priv)
 	spin_lock_irqsave(&dev->drw_lock, irqflags);
 	spin_lock_irqsave(&dev->drw_lock, irqflags);
 
 
 	info = drm_get_drawable_info(dev, draw->handle);
 	info = drm_get_drawable_info(dev, draw->handle);
+	if (info == NULL) {
+		spin_unlock_irqrestore(&dev->drw_lock, irqflags);
+		return -EINVAL;
+	}
 	drm_free(info->rects, info->num_rects * sizeof(struct drm_clip_rect),
 	drm_free(info->rects, info->num_rects * sizeof(struct drm_clip_rect),
 			DRM_MEM_BUFS);
 			DRM_MEM_BUFS);
 	drm_free(info, sizeof(struct drm_drawable_info), DRM_MEM_BUFS);
 	drm_free(info, sizeof(struct drm_drawable_info), DRM_MEM_BUFS);