summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2015-04-07 11:32:02 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-04-10 08:55:58 +0200
commitb833bb61fd905a8d2c7392d1bc5fedf34921e251 (patch)
tree326c205b83c7976b763e311f95de39454a9bc352 /drivers/gpu
parent9b4fd8f250e08d8f22a31d947ac3ca16383df1e1 (diff)
drm/i915: use kref_put_mutex in i915_gem_request_unreference__unlocked
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 4fd38f2e6e62..d5b21153f200 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2148,14 +2148,14 @@ i915_gem_request_unreference(struct drm_i915_gem_request *req)
static inline void
i915_gem_request_unreference__unlocked(struct drm_i915_gem_request *req)
{
- if (req && !atomic_add_unless(&req->ref.refcount, -1, 1)) {
- struct drm_device *dev = req->ring->dev;
+ struct drm_device *dev;
+
+ if (!req)
+ return;
- mutex_lock(&dev->struct_mutex);
- if (likely(atomic_dec_and_test(&req->ref.refcount)))
- i915_gem_request_free(&req->ref);
+ dev = req->ring->dev;
+ if (kref_put_mutex(&req->ref, i915_gem_request_free, &dev->struct_mutex))
mutex_unlock(&dev->struct_mutex);
- }
}
static inline void i915_gem_request_assign(struct drm_i915_gem_request **pdst,