On Tue, Apr 07, 2015 at 03:56:07PM +0200, Maarten Lankhorst wrote: > If kref_put_mutex returns true then the caller or the put function is responsible > for unlocking the mutex. This patch introduces the kref_put_mutex() usage, so this commit message is rather confusing. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > --- > diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h > index 1e6ae1458f7a..7a592d7e398b 100644 > --- a/include/drm/drm_gem.h > +++ b/include/drm/drm_gem.h > @@ -149,14 +149,16 @@ drm_gem_object_unreference(struct drm_gem_object *obj) > static inline void > drm_gem_object_unreference_unlocked(struct drm_gem_object *obj) > { > - if (obj && !atomic_add_unless(&obj->refcount.refcount, -1, 1)) { > - struct drm_device *dev = obj->dev; > + struct drm_device *dev; > + > + if (!obj) > + return; > > - mutex_lock(&dev->struct_mutex); > - if (likely(atomic_dec_and_test(&obj->refcount.refcount))) > - drm_gem_object_free(&obj->refcount); > + dev = obj->dev; > + if (kref_put_mutex(&obj->refcount, drm_gem_object_free, &dev->struct_mutex)) > mutex_unlock(&dev->struct_mutex); > - } > + else > + might_lock(&dev->struct_mutex); > } > > int drm_gem_handle_create(struct drm_file *file_priv, > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel