drm/vmwgfx: Look up objects without taking a reference
authorThomas Hellstrom <thellstrom@vmware.com>
Wed, 26 Sep 2018 13:55:16 +0000 (15:55 +0200)
committerThomas Hellstrom <thellstrom@vmware.com>
Thu, 27 Sep 2018 14:14:48 +0000 (16:14 +0200)
commite14c02e6b6990e9f6ee18a214a22ac26bae1b25e
tree42258a937b40f01e9dcd935b089f68f6f824a0c3
parentc7eae62666ade1c8c9960085911e420227144d5a
drm/vmwgfx: Look up objects without taking a reference

Typically when we look up objects under the rcu lock, we take a reference
to make sure the returned object pointer is valid.
Now provide a function to look up an object and instead of taking a
reference to it, keep the rcu lock held when returning the object pointer.
This means that the object pointer is valid as long as the rcu lock is
held, but the object may be doomed (its refcount may be zero). Any
persistent usage of the object pointer outside of the rcu lock requires
a reference to be taken using kref_get_unless_zero().

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Sinclair Yeh <syeh@vmware.com>
drivers/gpu/drm/vmwgfx/ttm_object.c
drivers/gpu/drm/vmwgfx/ttm_object.h