diff --git a/src/vulkan/device-select-layer/device_select_x11.c b/src/vulkan/device-select-layer/device_select_x11.c index b17402e7b06..17387514abf 100644 --- a/src/vulkan/device-select-layer/device_select_x11.c +++ b/src/vulkan/device-select-layer/device_select_x11.c @@ -67,6 +67,8 @@ int device_select_find_xcb_pci_default(struct device_pci_info *devices, uint32_t int scrn; xcb_connection_t *conn; int default_idx = -1; + drmDevicePtr xdev = NULL; + conn = xcb_connect(NULL, &scrn); if (!conn) return -1; @@ -91,7 +93,6 @@ int device_select_find_xcb_pci_default(struct device_pci_info *devices, uint32_t if (dri3_fd == -1) goto out; - drmDevicePtr xdev; int ret = drmGetDevice2(dri3_fd, 0, &xdev); close(dri3_fd); if (ret < 0) @@ -113,7 +114,9 @@ int device_select_find_xcb_pci_default(struct device_pci_info *devices, uint32_t if (default_idx != -1) break; } + out: + drmFreeDevice(&xdev); /* Is NULL pointer safe. */ xcb_disconnect(conn); return default_idx; }