[PATCH 2/2] drm/syncobj: Use scope-based cleanup for eventfd_ctx

From: Bence Csokas

Date: Wed Sep 09 2026 - 08:49:26 EST


Now that eventfd supports __free(), use it in drm_syncobj_eventfd_ioctl().

Signed-off-by: Bence Csokas <bence.csokas@xxxxxxx>
---
drivers/gpu/drm/drm_syncobj.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c
index c23a5de27eff..261d5606e8bd 100644
--- a/drivers/gpu/drm/drm_syncobj.c
+++ b/drivers/gpu/drm/drm_syncobj.c
@@ -1462,9 +1462,9 @@ int
drm_syncobj_eventfd_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_private)
{
+ struct eventfd_ctx *ev_fd_ctx __free(eventfd) = NULL;
struct drm_syncobj_eventfd *args = data;
struct drm_syncobj *syncobj;
- struct eventfd_ctx *ev_fd_ctx;
struct syncobj_eventfd_entry *entry;
int ret;

@@ -1484,16 +1484,17 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, void *data,
ev_fd_ctx = eventfd_ctx_fdget(args->fd);
if (IS_ERR(ev_fd_ctx)) {
ret = PTR_ERR(ev_fd_ctx);
+ ev_fd_ctx = NULL;
goto err_fdget;
}

entry = kzalloc_obj(*entry);
if (!entry) {
ret = -ENOMEM;
- goto err_kzalloc;
+ goto err_fdget;
}
entry->syncobj = syncobj;
- entry->ev_fd_ctx = ev_fd_ctx;
+ entry->ev_fd_ctx = no_free_ptr(ev_fd_ctx);
entry->point = args->point;
entry->flags = args->flags;

@@ -1502,8 +1503,6 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, void *data,

return 0;

-err_kzalloc:
- eventfd_ctx_put(ev_fd_ctx);
err_fdget:
drm_syncobj_put(syncobj);
return ret;

--
2.55.0