dma-buf: add a warning when drv try to reserve 0 fence slots
authorChristian König <ckoenig.leichtzumerken@gmail.com>
Wed, 29 May 2024 08:43:22 +0000 (10:43 +0200)
committerChristian König <christian.koenig@amd.com>
Fri, 31 May 2024 08:12:52 +0000 (10:12 +0200)
When dma_resv_reserve_fences() is called with num_fences=0 it usually
means that a driver or other component messed up its calculation how
many fences are needed. Warn in that situation.

When no fence are needed the function shouldn't be called in the first
place.

Signed-off-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240529084322.2284-1-christian.koenig@amd.com
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
drivers/dma-buf/dma-resv.c

index e2869fb311403964b492d2e5d9f0d37993c8bff5..5f8d010516f07f542827df329ef6042339e586cc 100644 (file)
@@ -186,6 +186,13 @@ int dma_resv_reserve_fences(struct dma_resv *obj, unsigned int num_fences)
 
        dma_resv_assert_held(obj);
 
+       /* Driver and component code should never call this function with
+        * num_fences=0. If they do it usually points to bugs when calculating
+        * the number of needed fences dynamically.
+        */
+       if (WARN_ON(!num_fences))
+               return -EINVAL;
+
        old = dma_resv_fences_list(obj);
        if (old && old->max_fences) {
                if ((old->num_fences + num_fences) <= old->max_fences)