summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorentin Noël <corentin.noel@collabora.com>2023-09-18 16:27:57 +0200
committerCorentin Noël <corentin.noel@collabora.com>2023-09-18 16:27:57 +0200
commit5ec8b8e4cddd6d62b93c8145a777d6eb3f3e9c66 (patch)
treed13cd4408bcfae0890045428d94d214be93b5505
parent2859eb35ab4a73fee678f61e5a8c3e6a32f2736f (diff)
resource: virgl_resource_create_from_fd always take the ownership of the fdtintou/virgl_resource_create
Make the failing case also close the file descriptor. This allows consumers to know that the fd is actually given away.
-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,