Mesa (10.2): glx: load dri driver with RTLD_LOCAL so dlclose never fails to unload
Ian Romanick
idr at kemper.freedesktop.org
Thu May 29 23:02:05 UTC 2014
Module: Mesa
Branch: 10.2
Commit: 7ab2363c11d474ec0bcdc04cb14d4a5eedfa3bac
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7ab2363c11d474ec0bcdc04cb14d4a5eedfa3bac
Author: Jerome Glisse <jglisse at redhat.com>
Date: Thu May 29 13:32:21 2014 -0400
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 at lists.freedesktop.org>
Reviewed-by: Eric Anholt <eric at anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Signed-off-by: Jérôme Glisse <jglisse at redhat.com>
(cherry picked from commit e3cc0d90e14e62a0a787b6c07a6df0f5c84039be)
---
src/glx/dri_common.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
index 8bf4705..e5a3f70 100644
--- a/src/glx/dri_common.c
+++ b/src/glx/dri_common.c
@@ -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)
More information about the mesa-commit
mailing list