mutex_lock(&i915->mm.stolen_lock);
        ret = drm_mm_reserve_node(&i915->mm.stolen, stolen);
        mutex_unlock(&i915->mm.stolen_lock);
-       if (ret) {
-               obj = ERR_PTR(ret);
+       if (ret)
                goto err_free;
-       }
 
        obj = i915_gem_object_alloc();
        if (!obj) {
-               obj = ERR_PTR(-ENOMEM);
+               ret = -ENOMEM;
                goto err_stolen;
        }
 
        ret = __i915_gem_object_create_stolen(mem, obj, stolen);
-       if (ret) {
-               obj = ERR_PTR(ret);
+       if (ret)
                goto err_object_free;
-       }
 
        i915_gem_object_set_cache_coherency(obj, I915_CACHE_NONE);
        return obj;
        i915_gem_stolen_remove_node(i915, stolen);
 err_free:
        kfree(stolen);
-       return obj;
+       return ERR_PTR(ret);
 }
 
 bool i915_gem_object_is_stolen(const struct drm_i915_gem_object *obj)