drm/i915: Reject attempted pwrites into a read-only object
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 12 Jul 2018 18:53:14 +0000 (19:53 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 13 Jul 2018 15:15:38 +0000 (16:15 +0100)
If the user created a read-only object, they should not be allowed to
circumvent the write protection using the pwrite ioctl.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jon Bloomfield <jon.bloomfield@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Reviewed-by: Jon Bloomfield <jon.bloomfield@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180712185315.3288-5-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index 1910c66f48e28f37545d554d26b76d940031a352..42d24410a98c6b3474265e0d5b0aa50b86251d04 100644 (file)
@@ -1627,6 +1627,12 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
                goto err;
        }
 
+       /* Writes not allowed into this read-only object */
+       if (i915_gem_object_is_readonly(obj)) {
+               ret = -EINVAL;
+               goto err;
+       }
+
        trace_i915_gem_object_pwrite(obj, args->offset, args->size);
 
        ret = -ENODEV;