Mesa (main): loader: Handle failure to load DRI driver library

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 13 08:10:35 UTC 2021


Module: Mesa
Branch: main
Commit: b2252de03e655aecff0f10573f8c541470775128
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b2252de03e655aecff0f10573f8c541470775128

Author: James Jones <jajones at nvidia.com>
Date:   Fri Jul  9 08:40:19 2021 -0700

loader: Handle failure to load DRI driver library

I factored out the chunk of loader code that dlopen()s
libraries from the rest of the DRI driver loader function
in this commit:

  commit bc343154f816b637b200933e1c1a35db19f478ef
  Author: James Jones <jajones at nvidia.com>
  Date:   Thu Apr 22 23:17:08 2021 -0700

  loader: Factor out driver library loading code

However, I failed to adjust the DRI loader function that
now uses the new helper function to handle the case where
the requested DRI library is not found.

This change restores the prior behavior, and also ensures
loader_open_driver() consistently returns NULL in the
out_driver_handle parameter on failure.

Fixes: bc343154f816 ("loader: Factor out driver library loading code")
Signed-off-by: James Jones <jajones at nvidia.com>
Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11807>

---

 src/loader/loader.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/loader/loader.c b/src/loader/loader.c
index b4a3ca7fbea..08eeb61504b 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -612,6 +612,9 @@ loader_open_driver(const char *driver_name,
    void *driver = loader_open_driver_lib(driver_name, "_dri", search_path_vars,
                                          DEFAULT_DRIVER_DIR, true);
 
+   if (!driver)
+      goto failed;
+
    get_extensions_name = loader_get_extensions_name(driver_name);
    if (get_extensions_name) {
       get_extensions = dlsym(driver, get_extensions_name);
@@ -630,8 +633,10 @@ loader_open_driver(const char *driver_name,
       log_(_LOADER_WARNING,
            "MESA-LOADER: driver exports no extensions (%s)\n", dlerror());
       dlclose(driver);
+      driver = NULL;
    }
 
+failed:
    *out_driver_handle = driver;
    return extensions;
 }



More information about the mesa-commit mailing list