diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 035e742c98a..f871a080232 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -2367,7 +2367,7 @@ zink_screen_export_dmabuf_semaphore(struct zink_screen *screen, struct zink_reso .fd = -1, }; - int fd; + int fd = -1; if (res->obj->is_aux) { fd = os_dupfd_cloexec(res->obj->handle); } else { @@ -2378,6 +2378,11 @@ zink_screen_export_dmabuf_semaphore(struct zink_screen *screen, struct zink_reso VKSCR(GetMemoryFdKHR)(screen->dev, &fd_info, &fd); } + if (unlikely(fd < 0)) { + mesa_loge("MESA: Unable to get a valid memory fd"); + return VK_NULL_HANDLE; + } + int ret = drmIoctl(fd, DMA_BUF_IOCTL_EXPORT_SYNC_FILE, &export); if (ret) { if (errno == ENOTTY || errno == EBADF || errno == ENOSYS) {