Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 092de6f2 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915/evict: Ensure we completely cleanup on failure



... and not leave the objects in a inconsistent state.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
parent 36cf1742
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -127,9 +127,15 @@ i915_gem_evict_something(struct drm_device *dev, int min_size,
	}

	/* Nothing found, clean up and bail out! */
	list_for_each_entry(obj, &unwind_list, exec_list) {
	while (!list_empty(&unwind_list)) {
		obj = list_first_entry(&unwind_list,
				       struct drm_i915_gem_object,
				       exec_list);

		ret = drm_mm_scan_remove_block(obj->gtt_space);
		BUG_ON(ret);

		list_del_init(&obj->exec_list);
		drm_gem_object_unreference(&obj->base);
	}

@@ -162,6 +168,7 @@ i915_gem_evict_something(struct drm_device *dev, int min_size,
				       exec_list);
		if (ret == 0)
			ret = i915_gem_object_unbind(obj);

		list_del_init(&obj->exec_list);
		drm_gem_object_unreference(&obj->base);
	}