Loading drivers/gpu/drm/drm_syncobj.c +19 −14 Original line number Diff line number Diff line Loading @@ -386,33 +386,38 @@ static int drm_syncobj_alloc_file(struct drm_syncobj *syncobj) return 0; } static int drm_syncobj_handle_to_fd(struct drm_file *file_private, u32 handle, int *p_fd) int drm_syncobj_get_fd(struct drm_syncobj *syncobj, int *p_fd) { struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); int ret; int fd; if (!syncobj) return -EINVAL; fd = get_unused_fd_flags(O_CLOEXEC); if (fd < 0) { drm_syncobj_put(syncobj); if (fd < 0) return fd; } if (!syncobj->file) { ret = drm_syncobj_alloc_file(syncobj); if (ret) goto out_put_fd; if (ret) { put_unused_fd(fd); return ret; } } fd_install(fd, syncobj->file); drm_syncobj_put(syncobj); *p_fd = fd; return 0; out_put_fd: put_unused_fd(fd); } EXPORT_SYMBOL(drm_syncobj_get_fd); static int drm_syncobj_handle_to_fd(struct drm_file *file_private, u32 handle, int *p_fd) { struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); int ret; if (!syncobj) return -EINVAL; ret = drm_syncobj_get_fd(syncobj, p_fd); drm_syncobj_put(syncobj); return ret; } Loading include/drm/drm_syncobj.h +1 −0 Original line number Diff line number Diff line Loading @@ -140,5 +140,6 @@ int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); int drm_syncobj_get_handle(struct drm_file *file_private, struct drm_syncobj *syncobj, u32 *handle); int drm_syncobj_get_fd(struct drm_syncobj *syncobj, int *p_fd); #endif Loading
drivers/gpu/drm/drm_syncobj.c +19 −14 Original line number Diff line number Diff line Loading @@ -386,33 +386,38 @@ static int drm_syncobj_alloc_file(struct drm_syncobj *syncobj) return 0; } static int drm_syncobj_handle_to_fd(struct drm_file *file_private, u32 handle, int *p_fd) int drm_syncobj_get_fd(struct drm_syncobj *syncobj, int *p_fd) { struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); int ret; int fd; if (!syncobj) return -EINVAL; fd = get_unused_fd_flags(O_CLOEXEC); if (fd < 0) { drm_syncobj_put(syncobj); if (fd < 0) return fd; } if (!syncobj->file) { ret = drm_syncobj_alloc_file(syncobj); if (ret) goto out_put_fd; if (ret) { put_unused_fd(fd); return ret; } } fd_install(fd, syncobj->file); drm_syncobj_put(syncobj); *p_fd = fd; return 0; out_put_fd: put_unused_fd(fd); } EXPORT_SYMBOL(drm_syncobj_get_fd); static int drm_syncobj_handle_to_fd(struct drm_file *file_private, u32 handle, int *p_fd) { struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); int ret; if (!syncobj) return -EINVAL; ret = drm_syncobj_get_fd(syncobj, p_fd); drm_syncobj_put(syncobj); return ret; } Loading
include/drm/drm_syncobj.h +1 −0 Original line number Diff line number Diff line Loading @@ -140,5 +140,6 @@ int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); int drm_syncobj_get_handle(struct drm_file *file_private, struct drm_syncobj *syncobj, u32 *handle); int drm_syncobj_get_fd(struct drm_syncobj *syncobj, int *p_fd); #endif