@@ -4292,6 +4292,7 @@ void i915_gem_free_object(struct drm_gem_object *obj)
{
struct drm_device *dev = obj->dev;
struct drm_i915_gem_object *obj_priv = to_intel_bo(obj);
+ int ret;
trace_i915_gem_object_destroy(obj);
@@ -4301,7 +4302,9 @@ void i915_gem_free_object(struct drm_gem_object *obj)
if (obj_priv->phys_obj)
i915_gem_detach_phys_object(dev, obj);
- i915_gem_object_unbind(obj);
+ do {
+ ret = i915_gem_object_unbind(obj);
+ } while (ret == -ERESTARTSYS);
if (obj_priv->mmap_offset)
i915_gem_free_mmap_offset(obj);