]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
accel/habanalabs: clarify ctx use after hl_ctx_put() in dmabuf release
authorTomer Tayar <tomer.tayar@intel.com>
Thu, 25 Jul 2024 08:39:58 +0000 (11:39 +0300)
committerKoby Elbaz <koby.elbaz@intel.com>
Thu, 25 Sep 2025 06:09:27 +0000 (09:09 +0300)
In hl_release_dmabuf(), ctx is dereferenced after calling hl_ctx_put()
to obtain the compute device file.

This is safe because the dma-buf object holds a file reference taken in
export_dmabuf(), and the file release (which drops another ctx reference)
can only happen after we drop that file reference via fput(). Thus, this
hl_ctx_put() call cannot be the last one at this point.

Add a comment explaining this to avoid confusion.

Signed-off-by: Tomer Tayar <tomer.tayar@intel.com>
Reviewed-by: Koby Elbaz <koby.elbaz@intel.com>
Signed-off-by: Koby Elbaz <koby.elbaz@intel.com>
drivers/accel/habanalabs/common/memory.c

index 48d2d598a387659647fe6c705759c57591fe4b3f..633db4bff46fc4120ca6ea0093ee973a854914c2 100644 (file)
@@ -1837,7 +1837,12 @@ static void hl_release_dmabuf(struct dma_buf *dmabuf)
        atomic_dec(&ctx->hdev->dmabuf_export_cnt);
        hl_ctx_put(ctx);
 
-       /* Paired with get_file() in export_dmabuf() */
+       /*
+        * Paired with get_file() in export_dmabuf().
+        * 'ctx' can be still used here to get the file pointer, even after hl_ctx_put() was called,
+        * because releasing the compute device file involves another reference decrement, and it
+        * would be possible only after calling fput().
+        */
        fput(ctx->hpriv->file_priv->filp);
 
        kfree(hl_dmabuf);