{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1752656348,
"reponame":"openssl",
"desc":"OpenSSL",
"owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/openssl",
"f":3,
"items": [
{"schema":"libjg2-1",
"cid":"0bb6053337d46387c1d6e3e39fa17653",
"commit": {"type":"commit",
"time": 1535298469,
"time_ofs": 120,
"oid_tree": { "oid": "4b95e6c1dd4f10bc9a7c649e2856579d7e5db5ab", "alias": []},
"oid":{ "oid": "7d38ca3f8bca58bf7b69e78c1f1ab69e5f429dff", "alias": []},
"msg": "x509v3/v3_purp.c: refine lock-free check in x509v3_cache_extensions.",
"sig_commit": { "git_time": { "time": 1535298469, "offset": 120 }, "name": "Andy Polyakov", "email": "appro@openssl.org", "md5": "50bd64fa2a792cbbf679fa16213a3b2a" },
"sig_author": { "git_time": { "time": 1534501836, "offset": 120 }, "name": "Andy Polyakov", "email": "appro@openssl.org", "md5": "50bd64fa2a792cbbf679fa16213a3b2a" }},
"body": "x509v3/v3_purp.c: refine lock-free check in x509v3_cache_extensions.\n\nReviewed-by: Kurt Roeckx \u003ckurt@roeckx.be\u003e\n(Merged from https://github.com/openssl/openssl/pull/6996)\n"
,
"diff": "diff --git a/crypto/x509v3/v3_purp.c b/crypto/x509v3/v3_purp.c\nindex 5a535e2..70b0397 100644\n--- a/crypto/x509v3/v3_purp.c\n+++ b/crypto/x509v3/v3_purp.c\n@@ -354,9 +354,11 @@ static void x509v3_cache_extensions(X509 *x)\n X509_EXTENSION *ex;\n int i;\n \n+#ifdef tsan_ld_acq\n /* fast lock-free check, see end of the function for details. */\n- if (tsan_load((TSAN_QUALIFIER int *)\u0026x-\u003eex_cached))\n+ if (tsan_ld_acq((TSAN_QUALIFIER int *)\u0026x-\u003eex_cached))\n return;\n+#endif\n \n CRYPTO_THREAD_write_lock(x-\u003elock);\n if (x-\u003eex_flags \u0026 EXFLAG_SET) {\n@@ -498,13 +500,15 @@ static void x509v3_cache_extensions(X509 *x)\n }\n x509_init_sig_info(x);\n x-\u003eex_flags |\u003d EXFLAG_SET;\n- CRYPTO_THREAD_unlock(x-\u003elock);\n+#ifdef tsan_st_rel\n+ tsan_st_rel((TSAN_QUALIFIER int *)\u0026x-\u003eex_cached, 1);\n /*\n- * It has to be placed after memory barrier, which is implied by unlock.\n- * Worst thing that can happen is that another thread proceeds to lock\n- * and checks x-\u003eex_flags \u0026 EXFLAGS_SET. See beginning of the function.\n+ * Above store triggers fast lock-free check in the beginning of the\n+ * function. But one has to ensure that the structure is \u0022stable\u0022, i.e.\n+ * all stores are visible on all processors. Hence the release fence.\n */\n- tsan_store((TSAN_QUALIFIER int *)\u0026x-\u003eex_cached, 1);\n+#endif\n+ CRYPTO_THREAD_unlock(x-\u003elock);\n }\n \n /*-\n","s":{"c":1752656348,"u": 38245}}
],"g": 39133,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}