]> git.baikalelectronics.ru Git - kernel.git/commit
dma-buf: add dma_resv_for_each_fence_unlocked v8
authorChristian König <christian.koenig@amd.com>
Tue, 15 Jun 2021 13:10:03 +0000 (15:10 +0200)
committerChristian König <christian.koenig@amd.com>
Wed, 6 Oct 2021 07:48:01 +0000 (09:48 +0200)
commitf21858d3b3f576623c47ba7c12c503b1e8b81693
treeecb4e8ff3e0f15356853153cef2fa406920ffb03
parent7f4e0f3857fe7925a6dc40e84d47f824537b861c
dma-buf: add dma_resv_for_each_fence_unlocked v8

Abstract the complexity of iterating over all the fences
in a dma_resv object.

The new loop handles the whole RCU and retry dance and
returns only fences where we can be sure we grabbed the
right one.

v2: fix accessing the shared fences while they might be freed,
    improve kerneldoc, rename _cursor to _iter, add
    dma_resv_iter_is_exclusive, add dma_resv_iter_begin/end

v3: restructor the code, move rcu_read_lock()/unlock() into the
    iterator, add dma_resv_iter_is_restarted()

v4: fix NULL deref when no explicit fence exists, drop superflous
    rcu_read_lock()/unlock() calls.

v5: fix typos in the documentation

v6: fix coding error when excl fence is NULL

v7: one more logic fix

v8: fix index check in dma_resv_iter_is_exclusive()

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> (v7)
Link: https://patchwork.freedesktop.org/patch/msgid/20211005113742.1101-2-christian.koenig@amd.com
drivers/dma-buf/dma-resv.c
include/linux/dma-resv.h