]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/linux/reservation.h
dma-buf: nuke reservation_object seq number
[linux.git] / include / linux / reservation.h
index c6c8c93785c40255e9eac271465c8ecb6c771f6c..acddefea694fec0d29d61a4848d208678afa2088 100644 (file)
@@ -46,8 +46,6 @@
 #include <linux/rcupdate.h>
 
 extern struct ww_class reservation_ww_class;
-extern struct lock_class_key reservation_seqcount_class;
-extern const char reservation_seqcount_string[];
 
 /**
  * struct reservation_object_list - a list of shared fences
@@ -71,7 +69,6 @@ struct reservation_object_list {
  */
 struct reservation_object {
        struct ww_mutex lock;
-       seqcount_t seq;
 
        struct dma_fence __rcu *fence_excl;
        struct reservation_object_list __rcu *fence;
@@ -130,14 +127,12 @@ reservation_object_fences(struct reservation_object *obj,
                          struct reservation_object_list **list,
                          u32 *shared_count)
 {
-       unsigned int seq;
-
        do {
-               seq = read_seqcount_begin(&obj->seq);
                *excl = rcu_dereference(obj->fence_excl);
                *list = rcu_dereference(obj->fence);
                *shared_count = *list ? (*list)->shared_count : 0;
-       } while (read_seqcount_retry(&obj->seq, seq));
+               smp_rmb(); /* See reservation_object_add_excl_fence */
+       } while (rcu_access_pointer(obj->fence_excl) != *excl);
 }
 
 /**