The `zink_internal_create_screen()` function initializes
`screen->drm_fd` to 0, a valid file descriptor value, via `rzalloc`.
If an error is found during initialization, the `zink_destroy_screen()`
function is invoked in the `fail` label and the `screen->drm_fd` is
closed because its value is 0 and `screen->drm_fd != -1` is checked.
Initialize `screen->drm_fd` to -1 to avoid this issue.
Resolves: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10191
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Signed-off-by: José Expósito <jexposit@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26332>
(cherry picked from commit
fff3fc45a0125b408ca8d4dbd48e5633d63ccc5a)
"description": "zink: initialize drm_fd to -1",
"nominated": false,
"nomination_type": 3,
- "resolution": 4,
+ "resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null
return NULL;
}
+ screen->drm_fd = -1;
+
glsl_type_singleton_init_or_ref();
zink_debug = debug_get_option_zink_debug();
if (zink_descriptor_mode == ZINK_DESCRIPTOR_MODE_AUTO)