mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
glx: load dri driver with RTLD_LOCAL so dlclose never fails to unload
There is no reason anymore to load with RTLD_GLOBAL and for some driver this even result in dlclose failing to unload leading to catastrophic failure with swrast fallback. Cc: "10.1 10.2" <mesa-stable@lists.freedesktop.org> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
This commit is contained in:
parent
c0bd206a14
commit
e3cc0d90e1
1 changed files with 5 additions and 5 deletions
|
|
@ -45,8 +45,8 @@
|
|||
#ifndef RTLD_NOW
|
||||
#define RTLD_NOW 0
|
||||
#endif
|
||||
#ifndef RTLD_GLOBAL
|
||||
#define RTLD_GLOBAL 0
|
||||
#ifndef RTLD_LOCAL
|
||||
#define RTLD_LOCAL 0
|
||||
#endif
|
||||
|
||||
_X_HIDDEN void
|
||||
|
|
@ -99,7 +99,7 @@ driOpenDriver(const char *driverName)
|
|||
int len;
|
||||
|
||||
/* Attempt to make sure libGL symbols will be visible to the driver */
|
||||
glhandle = dlopen("libGL.so.1", RTLD_NOW | RTLD_GLOBAL);
|
||||
glhandle = dlopen("libGL.so.1", RTLD_NOW | RTLD_LOCAL);
|
||||
|
||||
libPaths = NULL;
|
||||
if (geteuid() == getuid()) {
|
||||
|
|
@ -127,14 +127,14 @@ driOpenDriver(const char *driverName)
|
|||
snprintf(realDriverName, sizeof realDriverName,
|
||||
"%.*s/tls/%s_dri.so", len, p, driverName);
|
||||
InfoMessageF("OpenDriver: trying %s\n", realDriverName);
|
||||
handle = dlopen(realDriverName, RTLD_NOW | RTLD_GLOBAL);
|
||||
handle = dlopen(realDriverName, RTLD_NOW | RTLD_LOCAL);
|
||||
#endif
|
||||
|
||||
if (handle == NULL) {
|
||||
snprintf(realDriverName, sizeof realDriverName,
|
||||
"%.*s/%s_dri.so", len, p, driverName);
|
||||
InfoMessageF("OpenDriver: trying %s\n", realDriverName);
|
||||
handle = dlopen(realDriverName, RTLD_NOW | RTLD_GLOBAL);
|
||||
handle = dlopen(realDriverName, RTLD_NOW | RTLD_LOCAL);
|
||||
}
|
||||
|
||||
if (handle != NULL)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue