dma-buf: add a warning when drv try to reserve 0 fence slots

Message ID 20240529084322.2284-1-christian.koenig@amd.com (mailing list archive)
State Not Applicable
Headers
Series dma-buf: add a warning when drv try to reserve 0 fence slots |

Commit Message

Christian König May 29, 2024, 8:43 a.m. UTC
  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>
---
 drivers/dma-buf/dma-resv.c | 7 +++++++
 1 file changed, 7 insertions(+)
  

Comments

Matthew Auld May 29, 2024, 10:38 a.m. UTC | #1
On 29/05/2024 09:43, Christian König wrote:
> 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>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
  

Patch

diff --git a/drivers/dma-buf/dma-resv.c b/drivers/dma-buf/dma-resv.c
index e2869fb31140..5f8d010516f0 100644
--- a/drivers/dma-buf/dma-resv.c
+++ b/drivers/dma-buf/dma-resv.c
@@ -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)