Access the test data mutex via accessor

Remove the use of extern and instead use an accessor to get the address
of the test info mutex (defined only if MBEDTLS_TEST_MUTEX_USAGE is
defined, to hopefully stop more general usage)

Signed-off-by: Paul Elliott <paul.elliott@arm.com>
diff --git a/tests/include/test/helpers.h b/tests/include/test/helpers.h
index 73459d9..f2fb62d 100644
--- a/tests/include/test/helpers.h
+++ b/tests/include/test/helpers.h
@@ -37,6 +37,7 @@
 
 #if defined(MBEDTLS_THREADING_C) && defined(MBEDTLS_THREADING_PTHREAD) && \
     defined(MBEDTLS_TEST_HOOKS)
+#include "mbedtls/threading.h"
 #define MBEDTLS_TEST_MUTEX_USAGE
 #endif
 
@@ -230,8 +231,21 @@
  */
 void mbedtls_test_info_reset(void);
 
+#ifdef MBEDTLS_TEST_MUTEX_USAGE
 /**
- * \brief           Record the current test case as a failure if two integers
+ * \brief       Get the test info data mutex.
+ *
+ * \note        This is designed only to be used by threading_helpers to avoid a
+ *              deadlock, not for general access to this mutex.
+ *
+ * \return      The test info data mutex.
+ */
+mbedtls_threading_mutex_t *mbedtls_test_get_info_mutex(void);
+
+#endif /* MBEDTLS_TEST_MUTEX_USAGE */
+
+/**
+ * \brief Record the current test case as a failure if two integers
  *                  have a different value.
  *
  *                  This function is usually called via the macro
diff --git a/tests/src/helpers.c b/tests/src/helpers.c
index 724fb59..d0c75b0 100644
--- a/tests/src/helpers.c
+++ b/tests/src/helpers.c
@@ -288,7 +288,15 @@
 #endif /* MBEDTLS_THREADING_C */
 }
 
-#endif
+#endif /* MBEDTLS_BIGNUM_C */
+
+#ifdef MBEDTLS_TEST_MUTEX_USAGE
+mbedtls_threading_mutex_t *mbedtls_test_get_info_mutex(void)
+{
+    return &mbedtls_test_info_mutex;
+}
+
+#endif /* MBEDTLS_TEST_MUTEX_USAGE */
 
 /*----------------------------------------------------------------------------*/
 /* Helper Functions */
diff --git a/tests/src/threading_helpers.c b/tests/src/threading_helpers.c
index 0894700..165e350 100644
--- a/tests/src/threading_helpers.c
+++ b/tests/src/threading_helpers.c
@@ -117,8 +117,6 @@
      * mbedtls_test_mutex_usage_check() will mark it as failed. */
 }
 
-extern mbedtls_threading_mutex_t mbedtls_test_info_mutex;
-
 static int mbedtls_test_mutex_can_test(mbedtls_threading_mutex_t *mutex)
 {
     /* If we attempt to run tests on this mutex then we are going to run into a
@@ -127,7 +125,7 @@
      * reporting that failure, as we already hold the mutex at that point.
      * 2. Given the 'global' position of the initialization and free of this
      * mutex, it will be shown as leaked on the first test run. */
-    if (mutex == &mbedtls_test_info_mutex) {
+    if (mutex == mbedtls_test_get_info_mutex()) {
         return 0;
     }