diff --git a/.pick_status.json b/.pick_status.json index 3beec20b842..83599e70cf7 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3901,7 +3901,7 @@ "description": "vulkan-device-select: Don't leak drmDevicePtr", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, 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; }