diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-26 15:21:44 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-10-03 09:16:18 -0400 |
commit | 7dcd2499deab8f10011713c40bc2f309c9b65077 (patch) | |
tree | 1fc0476339e3fabd6b2a5f62dba1fd10abfd82f8 /drivers/gpu/drm | |
parent | ce9d419dbecc292cc3e06e8b1d6d123d3fa813a4 (diff) |
drm/i915: Rephrase pwrite bounds checking to avoid any potential overflow
... and do the same for pread.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 7749e78a7300..aa959c4a1836 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -471,12 +471,8 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data, | |||
471 | return -ENOENT; | 471 | return -ENOENT; |
472 | obj_priv = to_intel_bo(obj); | 472 | obj_priv = to_intel_bo(obj); |
473 | 473 | ||
474 | /* Bounds check source. | 474 | /* Bounds check source. */ |
475 | * | 475 | if (args->offset > obj->size || args->size > obj->size - args->offset) { |
476 | * XXX: This could use review for overflow issues... | ||
477 | */ | ||
478 | if (args->offset > obj->size || args->size > obj->size || | ||
479 | args->offset + args->size > obj->size) { | ||
480 | ret = -EINVAL; | 476 | ret = -EINVAL; |
481 | goto err; | 477 | goto err; |
482 | } | 478 | } |
@@ -939,12 +935,8 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, | |||
939 | return -ENOENT; | 935 | return -ENOENT; |
940 | obj_priv = to_intel_bo(obj); | 936 | obj_priv = to_intel_bo(obj); |
941 | 937 | ||
942 | /* Bounds check destination. | 938 | /* Bounds check destination. */ |
943 | * | 939 | if (args->offset > obj->size || args->size > obj->size - args->offset) { |
944 | * XXX: This could use review for overflow issues... | ||
945 | */ | ||
946 | if (args->offset > obj->size || args->size > obj->size || | ||
947 | args->offset + args->size > obj->size) { | ||
948 | ret = -EINVAL; | 940 | ret = -EINVAL; |
949 | goto err; | 941 | goto err; |
950 | } | 942 | } |