]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/dma-buf/reservation.c
x86/msr-index: Cleanup bit defines
[mirror_ubuntu-bionic-kernel.git] / drivers / dma-buf / reservation.c
index b44d9d7db347b4e4dcbad7d96c40f3e4af36a477..012fa3d1f407f47dad0c14328b4ed4e6d10100ff 100644 (file)
@@ -455,13 +455,15 @@ long reservation_object_wait_timeout_rcu(struct reservation_object *obj,
                                         unsigned long timeout)
 {
        struct dma_fence *fence;
-       unsigned seq, shared_count, i = 0;
+       unsigned seq, shared_count;
        long ret = timeout ? timeout : 1;
+       int i;
 
 retry:
        shared_count = 0;
        seq = read_seqcount_begin(&obj->seq);
        rcu_read_lock();
+       i = -1;
 
        fence = rcu_dereference(obj->fence_excl);
        if (fence && !test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) {
@@ -477,14 +479,14 @@ retry:
                fence = NULL;
        }
 
-       if (!fence && wait_all) {
+       if (wait_all) {
                struct reservation_object_list *fobj =
                                                rcu_dereference(obj->fence);
 
                if (fobj)
                        shared_count = fobj->shared_count;
 
-               for (i = 0; i < shared_count; ++i) {
+               for (i = 0; !fence && i < shared_count; ++i) {
                        struct dma_fence *lfence = rcu_dereference(fobj->shared[i]);
 
                        if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,