|
@@ -3467,7 +3467,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
|
|
|
enum i915_cache_level cache_level)
|
|
|
{
|
|
|
struct drm_device *dev = obj->base.dev;
|
|
|
- struct i915_vma *vma;
|
|
|
+ struct i915_vma *vma, *next;
|
|
|
int ret;
|
|
|
|
|
|
if (obj->cache_level == cache_level)
|
|
@@ -3478,7 +3478,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
|
|
|
return -EBUSY;
|
|
|
}
|
|
|
|
|
|
- list_for_each_entry(vma, &obj->vma_list, vma_link) {
|
|
|
+ list_for_each_entry_safe(vma, next, &obj->vma_list, vma_link) {
|
|
|
if (!i915_gem_valid_gtt_space(dev, &vma->node, cache_level)) {
|
|
|
ret = i915_vma_unbind(vma);
|
|
|
if (ret)
|