diff options
author | Corentin Noël <corentin.noel@collabora.com> | 2023-09-18 16:27:57 +0200 |
---|---|---|
committer | Corentin Noël <corentin.noel@collabora.com> | 2023-09-18 16:27:57 +0200 |
commit | 5ec8b8e4cddd6d62b93c8145a777d6eb3f3e9c66 (patch) | |
tree | d13cd4408bcfae0890045428d94d214be93b5505 | |
parent | 2859eb35ab4a73fee678f61e5a8c3e6a32f2736f (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.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, |