accel/habanalabs: clarify ctx use after hl_ctx_put() in dmabuf release

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>
This commit is contained in:
Tomer Tayar 2024-07-25 11:39:58 +03:00 committed by Koby Elbaz
parent b5cddeb0dc
commit d0dd796bec

@ -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);