zink: initialize drm_fd to -1
authorJosé Expósito <jexposit@redhat.com>
Wed, 22 Nov 2023 11:48:47 +0000 (12:48 +0100)
committerEric Engestrom <eric@engestrom.ch>
Fri, 8 Dec 2023 11:09:30 +0000 (11:09 +0000)
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)

.pick_status.json
src/gallium/drivers/zink/zink_screen.c

index 2646874..f4af8d3 100644 (file)
         "description": "zink: initialize drm_fd to -1",
         "nominated": false,
         "nomination_type": 3,
-        "resolution": 4,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null,
         "notes": null
index 50168d8..f42f340 100644 (file)
@@ -3126,6 +3126,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
       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)