Skip to content

Commit

Permalink
drm/i915/region: don't leak the object on error
Browse files Browse the repository at this point in the history
Sanity check the object size before allocating a new gem object.

Fixes: 97d5539 ("drm/i915/region: convert object_create into object_init")
Testcase: igt/gem_create/create-massive
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20210120104714.112812-1-matthew.auld@intel.com
  • Loading branch information
Matthew Auld authored and Chris Wilson committed Jan 20, 2021
1 parent 1e58215 commit 95b98f0
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/gpu/drm/i915/gem/i915_gem_region.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,6 @@ i915_gem_object_create_region(struct intel_memory_region *mem,
GEM_BUG_ON(!size);
GEM_BUG_ON(!IS_ALIGNED(size, I915_GTT_MIN_ALIGNMENT));

obj = i915_gem_object_alloc();
if (!obj)
return ERR_PTR(-ENOMEM);

/*
* XXX: There is a prevalence of the assumption that we fit the
* object's page count inside a 32bit _signed_ variable. Let's document
Expand All @@ -178,6 +174,10 @@ i915_gem_object_create_region(struct intel_memory_region *mem,
if (overflows_type(size, obj->base.size))
return ERR_PTR(-E2BIG);

obj = i915_gem_object_alloc();
if (!obj)
return ERR_PTR(-ENOMEM);

err = mem->ops->init_object(mem, obj, size, flags);
if (err)
goto err_object_free;
Expand Down

0 comments on commit 95b98f0

Please sign in to comment.