drm/i915: convert to using range_overflows
authorMatthew Auld <matthew.auld@intel.com>
Tue, 13 Dec 2016 20:32:22 +0000 (20:32 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 16 Dec 2016 21:22:12 +0000 (21:22 +0000)
Convert some of the obvious hand-rolled ranged overflow sanity checks to
our shiny new range_overflows macro.

Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161213203222.32564-4-matthew.auld@intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_vma.c

index f86a71d9fe372c942235180c25ede629407bc132..782be625d37d520bd837e72acdab553faf81037e 100644 (file)
@@ -1140,8 +1140,7 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data,
                return -ENOENT;
 
        /* Bounds check source.  */
-       if (args->offset > obj->base.size ||
-           args->size > obj->base.size - args->offset) {
+       if (range_overflows_t(u64, args->offset, args->size, obj->base.size)) {
                ret = -EINVAL;
                goto out;
        }
@@ -1454,8 +1453,7 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
                return -ENOENT;
 
        /* Bounds check destination. */
-       if (args->offset > obj->base.size ||
-           args->size > obj->base.size - args->offset) {
+       if (range_overflows_t(u64, args->offset, args->size, obj->base.size)) {
                ret = -EINVAL;
                goto err;
        }
index 9e121222c5ebfeb007c45a70f68617dd1e78e531..fd75d5704287e3d1cf1737a6e482da75006ebc2d 100644 (file)
@@ -176,10 +176,9 @@ int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level,
        if (bind_flags == 0)
                return 0;
 
-       if (GEM_WARN_ON(vma->node.start + vma->node.size < vma->node.start))
-               return -ENODEV;
-
-       if (GEM_WARN_ON(vma->node.start + vma->node.size > vma->vm->total))
+       if (GEM_WARN_ON(range_overflows(vma->node.start,
+                                       vma->node.size,
+                                       vma->vm->total)))
                return -ENODEV;
 
        if (vma_flags == 0 && vma->vm->allocate_va_range) {