summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorentin Noël <corentin.noel@collabora.com>2023-09-18 16:27:57 +0200
committerMarge Bot <emma+marge@anholt.net>2023-09-19 11:04:16 +0000
commitf3445e63e732f3173091b6279476daefd47c53ee (patch)
tree5e9dae6c077a983a85b91fa47fa549cdfd1ce240
parentef1d164eb81daf26759865d4a066618662de8798 (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.c4
-rw-r--r--src/virglrenderer.c4
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,