diff options
author | Corentin Noël <corentin.noel@collabora.com> | 2023-09-18 16:27:57 +0200 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-09-19 11:04:16 +0000 |
commit | f3445e63e732f3173091b6279476daefd47c53ee (patch) | |
tree | 5e9dae6c077a983a85b91fa47fa549cdfd1ce240 | |
parent | ef1d164eb81daf26759865d4a066618662de8798 (diff) |
resource: virgl_resource_create_from_fd always take the ownership of the fd
Make the failing case also close the file descriptor.
This allows consumers to know that the fd is actually given away.
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1242>
-rw-r--r-- | src/virgl_resource.c | 4 | ||||
-rw-r--r-- | src/virglrenderer.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/virgl_resource.c b/src/virgl_resource.c index 8ee64fc..0ee5468 100644 --- a/src/virgl_resource.c +++ b/src/virgl_resource.c @@ -143,8 +143,10 @@ virgl_resource_create_from_fd(uint32_t res_id, assert(fd_type != VIRGL_RESOURCE_FD_INVALID && fd >= 0); res = virgl_resource_create(res_id); - if (!res) + if (!res) { + close(fd); return NULL; + } res->fd_type = fd_type; /* take ownership */ diff --git a/src/virglrenderer.c b/src/virglrenderer.c index 3c0301f..030738b 100644 --- a/src/virglrenderer.c +++ b/src/virglrenderer.c @@ -1176,10 +1176,8 @@ int virgl_renderer_resource_create_blob(const struct virgl_renderer_resource_cre args->iovecs, args->num_iovs, &blob.vulkan_info); - if (!res) { - close(blob.u.fd); + if (!res) return -ENOMEM; - } } else { res = virgl_resource_create_from_pipe(args->res_handle, blob.u.pipe_resource, |