From 9e1a1633c439474c4886421ee021b93510df9ec0 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Thu, 10 Jul 2025 13:57:48 -0400 Subject: [PATCH] loader: Report DRI_PRIME errors earlier This needs devices[] in order to print an appropriate message but we free it right after the loop. Instead, print the error right away and make the error case after the free just handle jumping to err. Fixes: ea84b85887a1 ("loader: add DRI_PRIME_DEBUG env var") Reviewed-by: Adam Jackson Reviewed-By: Mike Blumenkrantz Part-of: --- src/loader/loader.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/loader/loader.c b/src/loader/loader.c index 5ec26b80b96..02734d7d2f9 100644 --- a/src/loader/loader.c +++ b/src/loader/loader.c @@ -583,21 +583,18 @@ bool loader_get_user_preferred_fd(int *fd_render_gpu, int *original_fd) log_(debug ? _LOADER_WARNING : _LOADER_INFO, "selected (%s)\n", devices[i]->nodes[DRM_NODE_RENDER]); fd = loader_open_device(devices[i]->nodes[DRM_NODE_RENDER]); + if (fd < 0) { + log_(debug ? _LOADER_WARNING : _LOADER_INFO, + "DRI_PRIME: failed to open '%s'\n", + devices[i]->nodes[DRM_NODE_RENDER]); + } break; } drmFreeDevices(devices, num_devices); - if (i == num_devices) + if (i == num_devices || fd < 0) goto err; - if (fd < 0) { - log_(debug ? _LOADER_WARNING : _LOADER_INFO, - "DRI_PRIME: failed to open '%s'\n", - devices[i]->nodes[DRM_NODE_RENDER]); - - goto err; - } - bool is_render_and_display_gpu_diff = !!strcmp(default_tag, prime.str); if (original_fd) { if (is_render_and_display_gpu_diff) {