drm/i915: Treat using a purged buffer as a source of EFAULT
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 31 Jan 2014 11:34:58 +0000 (11:34 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 4 Feb 2014 16:03:32 +0000 (17:03 +0100)
Since a purged buffer is one without any associated pages, attempting to
use it should generate EFAULT rather than EINVAL, as it is not strictly
an invalid parameter.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c

index a6c9f2e..a8a069f 100644 (file)
@@ -1619,7 +1619,7 @@ i915_gem_mmap_gtt(struct drm_file *file,
 
        if (obj->madv != I915_MADV_WILLNEED) {
                DRM_ERROR("Attempting to mmap a purgeable buffer\n");
-               ret = -EINVAL;
+               ret = -EFAULT;
                goto out;
        }
 
@@ -1973,7 +1973,7 @@ i915_gem_object_get_pages(struct drm_i915_gem_object *obj)
 
        if (obj->madv != I915_MADV_WILLNEED) {
                DRM_ERROR("Attempting to obtain a purgeable object\n");
-               return -EINVAL;
+               return -EFAULT;
        }
 
        BUG_ON(obj->pages_pin_count);
@@ -3917,7 +3917,7 @@ i915_gem_pin_ioctl(struct drm_device *dev, void *data,
 
        if (obj->madv != I915_MADV_WILLNEED) {
                DRM_ERROR("Attempting to pin a purgeable buffer\n");
-               ret = -EINVAL;
+               ret = -EFAULT;
                goto out;
        }