[PATCH RFC POC 45/50] accel/habanalabs: stop putting the dma-buf descriptor back on failure

From: Christian Brauner

Date: Tue Sep 15 2026 - 08:59:21 EST


Rely on the fd exit path machinery.

Signed-off-by: Christian Brauner (Amutable) <brauner@xxxxxxxxxx>
---
drivers/accel/habanalabs/common/memory.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/accel/habanalabs/common/memory.c b/drivers/accel/habanalabs/common/memory.c
index 361cff577381..1559442cd56f 100644
--- a/drivers/accel/habanalabs/common/memory.c
+++ b/drivers/accel/habanalabs/common/memory.c
@@ -1861,11 +1861,13 @@ static int export_dmabuf(struct hl_ctx *ctx,
{
DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
struct hl_device *hdev = ctx->hdev;
- CLASS(get_unused_fd, fd)(flags);
+ const struct fd_slot *fd = fd_prepare(flags);

- if (fd < 0) {
- dev_err(hdev->dev, "failed to get a file descriptor for a dma-buf, %d\n", fd);
- return fd;
+ if (IS_ERR(fd)) {
+ int rc = PTR_ERR(fd);
+
+ dev_err(hdev->dev, "failed to get a file descriptor for a dma-buf, %d\n", rc);
+ return rc;
}

exp_info.ops = &habanalabs_dmabuf_ops;
@@ -1889,8 +1891,7 @@ static int export_dmabuf(struct hl_ctx *ctx,
*/
get_file(ctx->hpriv->file_priv->filp);

- *dmabuf_fd = fd;
- fd_install(take_fd(fd), hl_dmabuf->dmabuf->file);
+ *dmabuf_fd = fd_stage(fd, hl_dmabuf->dmabuf->file);

return 0;
}

--
2.53.0