diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 50e49a3d7e51c218afb7582ab62cb247f3d52695..0ce3e4b3059eda516f1c15541a2da6a8aba7da80 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2653,10 +2653,8 @@ int i915_gem_request_alloc(struct intel_engine_cs *ring, req->i915 = dev_priv; ret = i915_gem_get_seqno(ring->dev, &req->seqno); - if (ret) { - kfree(req); - return ret; - } + if (ret) + goto err; req->ring = ring; @@ -2664,13 +2662,15 @@ int i915_gem_request_alloc(struct intel_engine_cs *ring, ret = intel_logical_ring_alloc_request_extras(req, ctx); else ret = intel_ring_alloc_request_extras(req); - if (ret) { - kfree(req); - return ret; - } + if (ret) + goto err; ring->outstanding_lazy_request = req; return 0; + +err: + kmem_cache_free(dev_priv->requests, req); + return ret; } struct drm_i915_gem_request *