Commit d0dd796b authored by Tomer Tayar's avatar Tomer Tayar Committed by Koby Elbaz
Browse files

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: default avatarTomer Tayar <tomer.tayar@intel.com>
Reviewed-by: default avatarKoby Elbaz <koby.elbaz@intel.com>
Signed-off-by: default avatarKoby Elbaz <koby.elbaz@intel.com>
parent b5cddeb0
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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);