From 0742edba5ef4aa2253436a449a797daa8f2779d5 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Tue, 17 Nov 2020 14:40:24 -0800 Subject: [PATCH] mesa: Synchronize get_gl_override() Fixes helgrind complaint found with piglit glx-multithread-clearbuffer. This is a legit race because override[api].version is cleared before parsing the override string. Signed-off-by: Rob Clark Reviewed-by: Kristian H. Kristensen Part-of: --- src/mesa/main/version.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index 418d20e..2056d07 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -26,10 +26,14 @@ #include #include "context.h" +#include "util/simple_mtx.h" + #include "mtypes.h" #include "version.h" #include "git_sha1.h" +static simple_mtx_t override_lock = _SIMPLE_MTX_INITIALIZER_NP; + /** * Scans 'string' to see if it ends with 'ending'. */ @@ -72,6 +76,8 @@ get_gl_override(gl_api api, int *version, bool *fwd_context, STATIC_ASSERT(ARRAY_SIZE(override) == API_OPENGL_LAST + 1); + simple_mtx_lock(&override_lock); + if (api == API_OPENGLES) goto exit; @@ -108,6 +114,8 @@ exit: *version = override[api].version; *fwd_context = override[api].fc_suffix; *compat_context = override[api].compat_suffix; + + simple_mtx_unlock(&override_lock); } /** -- 2.7.4